/* Stealth UO Client C# API
* ScriptAPI.cs updated for ScriptDotNet2.dll 22.3.2015 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Text.RegularExpressions;
namespace ScriptAPI
{
using ScriptDotNet2;
using ScriptDotNet2.Data;
using ScriptDotNet2.Model;
static class Constants
{
static public readonly string[] MapDirection = new string[] { "North", "NorthEast", "East", "SouthEast", "South", "SouthWest", "West", "NorthWest" };
}
#region Client
public static class Client
{
public static void Print(string message)
{
Stealth.Default.ClientPrint(message);
}
public static void Print(uint Obj, ushort Color, ushort Font, string Text)
{
Stealth.Default.ClientPrintEx(Obj, Color, Font, Text);
}
}
#endregion
#region Profile Methods
public static class Profile
{
public static bool IsConnected
{
private set { }
get
{
return Stealth.Default.GetConnectedStatus();
}
}
}
#endregion
#region Script Methods
public static class Script
{
public static void Wait(int WaitMS)
{
Stealth.Default.Wait(WaitMS);
}
}
#endregion
#region Item Find/Search Methods
public static class Find
{
///
/// Find an Item
///
/// Item Type
/// [Optional] ID of Container To Search [Default: 0x0 = Ground]
/// [Optional] Search Sub-Containers Recursively [Default: False]
/// [Optional] Color Category To Search[Default: 0xFFFF = All Colors]
/// Returns Item if Found or NULL if Not Found
public static Item FindItem(ushort Type, uint Container = 0x00000000, bool Recursive = false, ushort Color = 0xFFFF)
{
uint finditem = Stealth.Default.FindTypeEx(Type, Color, Container, Recursive);
if (finditem > 0)
return new Item(finditem);
else
return null;
}
///
/// Find all items of a certain type
///
/// Item Type
/// [Optional] ID of Container To Search [Default: 0x0 = Ground]
/// [Optional] Search Sub-Containers Recursively [Default: False]
/// [Optional] Color Category To Search[Default: 0xFFFF = All Colors]
/// List of Items Found
public static List- FindItems(ushort Type, uint Container = 0x00000000, bool Recursive = false, ushort Color = 0xFFFF)
{
List
- AllList = new List
- ();
Stealth.Default.FindTypeEx(Type, Color, Container, Recursive);
if (Stealth.Default.GetFindCount() == 0)
return AllList;
List findlist = Stealth.Default.GetFindList();
foreach (uint item in findlist)
AllList.Add(new Item(item));
return AllList;
}
///
/// Searches for items of Types[], in Containers[], and of Colors[]
///
/// Array of Item Types to search for
/// Array of Containers to search in [new uint[] = {0x00000000};] for Ground
/// Array of Colors to search for [new ushort[] = { 0xFFFF };] for all colors
/// [Optional] Search Sub-Containers Recursively [Default: False]
/// List of Items Found
public static List
- FindItems(ushort[] Types, uint[] Containers, ushort[] Colors, bool Recursive = false)
{
Stealth.Default.FindTypesArrayEx(Types, Colors, Containers, Recursive);
List findlist = Stealth.Default.GetFindList();
List
- AllList = new List
- ();
foreach (uint item in findlist)
AllList.Add(new Item(item));
return AllList;
}
///
/// Set distance (from player) to scan for items
///
public static uint FindDistance
{
get
{
return Stealth.Default.GetFindDistance();
}
set
{
Stealth.Default.SetFindDistance(value);
}
}
///
/// Set Vertical distance (from player) to scan for items
///
public static uint FindVerticalDistance
{
get
{
return Stealth.Default.GetFindVertical();
}
set
{
Stealth.Default.SetFindVertical(value);
}
}
}
#endregion
#region Target / Targeting Methods
public static class Target
{
public static Item RequestTileTarget(uint TimeoutMS = 0)
{
Stealth.Default.ClientRequestTileTarget();
Stopwatch timer = new Stopwatch();
timer.Start();
while (Stealth.Default.ClientTargetResponsePresent() == false)
{
if (TimeoutMS != 0 && timer.ElapsedMilliseconds >= TimeoutMS)
return default(Item);
}
return new Item(Stealth.Default.ClientTargetResponse().ID);
}
public static Item RequestTarget(uint TimeoutMS = 0)
{
Stealth.Default.ClientRequestObjectTarget();
Stopwatch timer = new Stopwatch();
timer.Start();
while (Stealth.Default.ClientTargetResponsePresent() == false)
{
if (TimeoutMS != 0 && timer.ElapsedMilliseconds >= TimeoutMS)
return default(Item);
}
return new Item(Stealth.Default.ClientTargetResponse().ID);
}
public static TargetInfo TargetSelection
{
private set {}
get
{
return Stealth.Default.ClientTargetResponse();
}
}
public static bool IsTargetSet
{
private set { }
get { return Stealth.Default.ClientTargetResponsePresent(); }
}
public static void WaitForTarget(int TimeoutMS = 10000)
{
Stealth.Default.WaitForTarget(TimeoutMS);
}
public static void TargetObject(Item obj)
{
Stealth.Default.TargetToObject(obj.ID);
}
public static void TargetCoord(ushort X, ushort Y, sbyte Z)
{
Stealth.Default.TargetToXYZ(X, Y, Z);
}
public static void MakeTargetPointer()
{
Stealth.Default.ClientRequestObjectTarget();
}
}
#endregion
// These aren't very important to most people
#region BaseType
///
/// Where it all starts. Every thing has an Item Type.
///
public class BaseType
{
private readonly ushort _type;
public ushort Type { private set { } get { return _type; } }
protected BaseType(uint ID)
{
_type = Stealth.Default.GetType(ID);
}
public BaseType(ushort Type)
{
_type = Type;
}
}
#endregion
#region BaseThing
///
/// Most basic class to describe any "thing" in UO
/// ID, Type, X, Y, Z
///
public class BaseThing : BaseType, IEquatable
{
protected uint _id;
public BaseThing(uint ID)
: base(ID)
{
_id = ID;
}
public BaseThing(BaseThing thing)
: base(thing.ID)
{
_id = thing.ID;
}
public BaseThing(uint ID, ushort TYPE)
: base(TYPE)
{
_id = ID;
}
///
/// X Coordinate [Relative to container]
///
public int X
{
private set { }
get
{
return Stealth.Default.GetX(_id);
}
}
///
/// Y Coordinate [Relative to container]
///
public int Y
{
private set { }
get
{
return Stealth.Default.GetY(_id);
}
}
///
/// Z Coordinate [Relative to container]
///
public sbyte Z
{
private set { }
get
{
return Stealth.Default.GetZ(_id);
}
}
///
/// UO Unique Identifier Number
///
public uint ID { private set { } get { return _id; } }
public override int GetHashCode()
{
return this._id.GetHashCode();
}
public override bool Equals(Object obj)
{
BaseThing other = obj as BaseThing;
if (other == null)
return false;
return (this.ID.Equals(other.ID));
}
public bool Equals(BaseThing other)
{
if (other == null)
return false;
return (this._id.Equals(other.ID));
}
public static bool operator ==(BaseThing a, BaseThing b)
{
if (object.ReferenceEquals(a, b)) return true;
if (object.ReferenceEquals(a, null)) return false;
if (object.ReferenceEquals(b, null)) return false;
return a.Equals(b);
}
public static bool operator !=(BaseThing a, BaseThing b)
{
if (object.ReferenceEquals(a, b)) return !true;
if (object.ReferenceEquals(a, null)) return !false;
if (object.ReferenceEquals(b, null)) return !false;
return !a.Equals(b);
}
}
#endregion
// These are the important ones
#region Item
///
/// Basic Item class (all in-game objects derive from this)
///
public class Item : BaseThing
{
public Item Parent
{
private set { }
get
{
return new Item(Stealth.Default.GetParent(ID));
}
}
public void Click()
{
Stealth.Default.ClickOnObject(_id);
}
public void Use()
{
Stealth.Default.UseObject(_id);
}
///
/// True/False if Item Exists
///
public bool IsExists
{
private set { }
get
{
return Stealth.Default.IsObjectExists(_id);
}
}
public bool IsNPC
{
private set { }
get
{
return Stealth.Default.IsNPC(_id);
}
}
public bool IsContainer
{
private set { }
get
{
return Stealth.Default.IsContainer(_id);
}
}
public bool IsMovable
{
private set { }
get
{
return Stealth.Default.IsMovable(_id);
}
}
///
/// Returns distance from player
/// [-1 if invalid / non-existant]
///
public int Distance
{
private set { }
get
{
return Stealth.Default.GetDistance(_id);
}
}
///
/// Tooltip describing properties of the item
/// [Value = NULL if unable to Scan]
///
public string Tooltip
{
private set { }
get
{
return Stealth.Default.GetTooltip(_id);
}
}
public string WaitForTooltip(int WaitMS)
{
return Stealth.Default.GetTooltip(ID, WaitMS);
}
///
/// UO Color Value
///
public ushort Color
{
private set { }
get
{
return Stealth.Default.GetColor(_id);
}
}
///
/// Quantity of this ID
///
public int Quantity
{
private set { }
get
{
return Stealth.Default.GetQuantity(_id);
}
}
///
/// UO Name Value
///
public string Name
{
private set { }
get
{
return Stealth.Default.GetName(_id);
}
}
public Item(uint ID)
: base(ID)
{
}
public Item(BaseThing thing)
: base(thing.ID)
{
}
}
#endregion
#region Container
public class Container : Item
{
public Container(uint ID)
: base(ID)
{
}
public Container(BaseThing thing)
: base(thing.ID)
{
}
public List
- Inventory(ushort FindType = 0xFFFF, bool Recursive = true)
{
return Find.FindItems(FindType, _id, Recursive);
}
public bool Open()
{
base.Use();
Stealth.Default.Wait(250);
if (Stealth.Default.GetLastContainer() == _id)
return true;
return false;
}
public void Close()
{
Stealth.Default.CloseClientUIWindow(UIWindowType.Container, _id);
}
}
#endregion
#region Creature
///
/// Creature Class
/// Base type for all living things
/// Properties Include MaxHP, HP (current), Notoriety
///
public class Creature : Item
{
///
/// Maximum HP of Creature
///
public int MaxHP
{
private set { }
get
{
return Stealth.Default.GetMaxHP(ID);
}
}
///
/// Current HP of Creature
///
public int HP
{
private set { }
get
{
return Stealth.Default.GetHP(ID);
}
}
///
/// Notoriety of Creature
/// 1: Innocent (Blue)
/// 2: Guild / Alliance (Green)
/// 3: Attackable But Not Criminal (Gray)
/// 4: Criminal (gray)
/// 5: Enemy (orange)
/// 6: Murderer (red)
///
public byte Notoriety
{
private set { }
get
{
return Stealth.Default.GetNotoriety(ID);
}
}
public Creature(uint ID)
: base(ID)
{
}
public Creature(BaseThing thing)
: base(thing.ID)
{
}
}
#endregion
#region NPC
public class NPC : Creature
{
public uint RightHand
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetRhandLayer(), ID);
}
}
public uint LeftHand
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetLhandLayer(), ID);
}
}
public uint Shoes
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetShoesLayer(), ID);
}
}
public uint Pants
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetPantsLayer(), ID);
}
}
public uint Shirt
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetShirtLayer(), ID);
}
}
public uint Hat
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetHatLayer(), ID);
}
}
public uint Gloves
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetGlovesLayer(), ID);
}
}
public uint Ring
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetRingLayer(), ID);
}
}
public uint Talisman
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetTalismanLayer(), ID);
}
}
public uint Neck
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetNeckLayer(), ID);
}
}
public uint Hair
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetHairLayer(), ID);
}
}
public uint Waist
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetWaistLayer(), ID);
}
}
public uint Torso
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetTorsoLayer(), ID);
}
}
public uint Brace
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetBraceLayer(), ID);
}
}
public uint Beard
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetBeardLayer(), ID);
}
}
public uint TorsoH
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetTorsoHLayer(), ID);
}
}
public uint Ear
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetEarLayer(), ID);
}
}
public uint Arms
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetArmsLayer(), ID);
}
}
public uint Cloak
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetCloakLayer(), ID);
}
}
public Container Backpack
{
private set { }
get
{
return new Container(Stealth.Default.ObjAtLayerEx(Stealth.GetBpackLayer(), ID));
}
}
public uint Robe
{
private set { }
get
{
return Stealth.Default.ObjAtLayerEx(Stealth.GetRobeLayer(), ID);
}
}
public List
- Inventory
{
private set { }
get
{
return this.Backpack.Inventory();
}
}
public NPC(uint ID)
: base(ID)
{
}
public NPC(BaseThing thing)
: base(thing.ID)
{
}
}
#endregion
#region Self
public static class Self
{
private static ExtendedInfo extInfo;
public static uint ID { private set { } get { return Stealth.Default.GetSelfID(); } }
public static int Mana { private set { } get { return Stealth.Default.GetSelfMana(); } }
public static int HP { private set { } get { return Stealth.Default.GetSelfLife(); } }
public static int Stamina { private set { } get { return Stealth.Default.GetSelfStam(); } }
public static int Weight { private set { } get { return Stealth.Default.GetSelfWeight(); } }
public static int Life { private set { } get { return HP; } }
public static int Stam { private set { } get { return Stamina; } }
public static int MaxMana { private set { } get { return Stealth.Default.GetSelfMaxMana(); } }
public static int MaxHP { private set { } get { return Stealth.Default.GetSelfMaxLife(); } }
public static int MaxStamina { private set { } get { return Stealth.Default.GetSelfMaxStam(); } }
public static int MaxWeight { private set { } get { return Stealth.Default.GetSelfMaxWeight(); } }
public static int MaxLife { private set { } get { return MaxHP; } }
public static int MaxStam { private set { } get { return MaxStamina; } }
public static int X { private set { } get { return Stealth.Default.GetX(ID); } }
public static int Y { private set { } get { return Stealth.Default.GetY(ID); } }
public static sbyte Z { private set { } get { return Stealth.Default.GetZ(ID); } }
public static string Direction
{
private set { }
get
{
return Constants.MapDirection[Stealth.Default.GetDirection(ID)];
}
}
public static string Facing { private set { } get { return Direction; } }
public static string DirectionTo(Item Obj)
{
return Constants.MapDirection[Stealth.Default.CalcDir(X, Y, Obj.X, Obj.Y)];
}
public static string Name
{
private set { }
get
{
return Stealth.Default.GetCharName();
}
}
public static bool IsHidden
{
private set { }
get
{
return Stealth.Default.GetHiddenStatus();
}
}
public static Container Backpack
{
private set { }
get
{
return new Container(Stealth.Default.GetBackpackID());
}
}
public static byte World
{
private set { }
get
{
return Stealth.Default.GetWorldNum();
}
}
public static string Shard
{
private set { }
get
{
return Stealth.Default.GetShardName();
}
}
public static uint LastContainer
{
private set { }
get
{
return Stealth.Default.GetLastContainer();
}
}
public static void Cast(string SpellName, Item Object = null)
{
if (Object != null)
Stealth.Default.CastSpellToObj(SpellName, Object.ID);
else
Stealth.Default.CastSpell(SpellName);
}
public static bool UseSkill(string Skill)
{
return Stealth.Default.UseSkill(Skill);
}
public static void UsePrimary()
{
Stealth.Default.UsePrimaryAbility();
}
public static void UseSecondary()
{
Stealth.Default.UseSecondaryAbility();
}
public static string ActiveAbility
{
private set { }
get
{
return Stealth.Default.GetAbility();
}
}
public static bool WarMode
{
set
{
Stealth.Default.SetWarMode(value);
}
get
{
return Stealth.Default.GetWarModeStatus();
}
}
public static Creature Target
{
set
{
Stealth.Default.Attack(value.ID);
}
get
{
uint ret = Stealth.Default.GetWarTarget();
if (ret == 0)
return null;
return new Creature(Stealth.Default.GetWarTarget());
}
}
static Self()
{
Properties.Refresh();
}
public static class Properties
{
///
/// Get updated properties
/// OSI Shards Only
///
public static void Refresh()
{
extInfo = Stealth.Default.GetExtInfo();
}
///
/// OSI Shards Only
///
public static ushort DamageMin { get { return extInfo.DamageMin; } private set { } }
///
/// OSI Shards Only
///
public static ushort DamageMax { get { return extInfo.DamageMax; } private set { } }
///
/// OSI Shards Only
///
public static uint Tithing_Points { get { return extInfo.TithingPoints; } private set { } }
///
/// OSI Shards Only
///
public static ushort Hit_Chance_Incr { get { return extInfo.HitChanceIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Swing_Speed_Incr { get { return extInfo.SwingSpeedIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Damage_Chance_Incr { get { return extInfo.DamageChanceIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Lower_Reagent_Cost { get { return extInfo.LowerReagentCost; } private set { } }
///
/// OSI Shards Only
///
public static ushort HP_Regen { get { return extInfo.HPRegen; } private set { } }
///
/// OSI Shards Only
///
public static ushort Stam_Regen { get { return extInfo.StamRegen; } private set { } }
///
/// OSI Shards Only
///
public static ushort Mana_Regen { get { return extInfo.ManaRegen; } private set { } }
///
/// OSI Shards Only
///
public static ushort Reflect_Phys_Damage { get { return extInfo.ReflectPhysDamage; } private set { } }
///
/// OSI Shards Only
///
public static ushort Enhance_Potions { get { return extInfo.EnhancePotions; } private set { } }
///
/// OSI Shards Only
///
public static ushort Defense_Chance_Incr { get { return extInfo.DefenseChanceIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Spell_Damage_Incr { get { return extInfo.SpellDamageIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Faster_Cast_Recovery { get { return extInfo.FasterCastRecovery; } private set { } }
///
/// OSI Shards Only
///
public static ushort Faster_Casting { get { return extInfo.FasterCasting; } private set { } }
///
/// OSI Shards Only
///
public static ushort Lower_Mana_Cost { get { return extInfo.LowerManaCost; } private set { } }
///
/// OSI Shards Only
///
public static ushort Strength_Incr { get { return extInfo.StrengthIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Dext_Incr { get { return extInfo.DextIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Int_Incr { get { return extInfo.IntIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort HP_Incr { get { return extInfo.HPIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Stam_Incr { get { return extInfo.StamIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Mana_Incr { get { return extInfo.ManaIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Max_HP_Incr { get { return extInfo.MaxHPIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Max_Stam_Incr { get { return extInfo.MaxStamIncr; } private set { } }
///
/// OSI Shards Only
///
public static ushort Max_Mana_Increase { get { return extInfo.MaxManaIncrease; } private set { } }
public static short Luck
{
get
{
short luck = Convert.ToInt16(Stealth.Default.GetSelfLuck());
if (luck != 0)
return luck;
return extInfo.Luck;
}
private set { }
}
public static Byte Sex { private set { } get { return Stealth.Default.GetSelfSex(); } }
public static String Title { private set { } get { return Stealth.Default.GetCharTitle(); } }
public static uint Gold { private set { } get { return Stealth.Default.GetSelfGold(); } }
public static ushort Weight { private set { } get { return Stealth.Default.GetSelfWeight(); } }
public static ushort MaxWeight { private set { } get { return Stealth.Default.GetSelfMaxWeight(); } }
public static Byte Race { private set { } get { return Stealth.Default.GetSelfRace(); } }
public static Byte MaxPets { private set { } get { return Stealth.Default.GetSelfPetsMax(); } }
public static Byte Pets { private set { } get { return Stealth.Default.GetSelfPetsCurrent(); } }
public static ushort PhysicalResist { private set { } get { return Stealth.Default.GetSelfArmor(); } }
public static ushort FireResist { private set { } get { return Stealth.Default.GetSelfFireResist(); } }
public static ushort ColdResist { private set { } get { return Stealth.Default.GetSelfColdResist(); } }
public static ushort PoisonResist { private set { } get { return Stealth.Default.GetSelfPoisonResist(); } }
public static ushort EnergyResist { private set { } get { return Stealth.Default.GetSelfEnergyResist(); } }
}
}
#endregion
#region GumpClass
public class GumpClass
{
private uint _gumpid, _gumptype;
private int _gumpidx;
private GumpInfo _gumpinfo;
private GumpClass(uint Serial, uint GumpType)
{
_gumpid = Serial;
_gumptype = GumpType;
_gumpidx = GetIndexbySerial(Serial);
_gumpinfo = Stealth.Default.GetGumpInfo(Convert.ToUInt16(_gumpidx));
}
public uint ID
{
private set { }
get
{
return _gumpid;
}
}
public int Index
{
private set { }
get
{
return _gumpidx;
}
}
public int Pages
{
private set { }
get
{
return _gumpinfo.Pages;
}
}
public bool IsExists()
{
for (ushort i = 0; i < GumpCount; i++)
{
if (Stealth.Default.GetGumpSerial(i) == _gumpid)
return true;
}
return false;
}
public List Textlines()
{
return Stealth.Default.GetGumpTextLines((ushort)_gumpidx);
}
public List ButtonTileArts { get { return _gumpinfo.ButtonTileArts.ToList(); } private set { } }
public List CheckBoxes { get { return _gumpinfo.CheckBoxes.ToList(); } private set { } }
public List CheckerTrans { get { return _gumpinfo.CheckerTrans.ToList(); } private set { } }
public List CroppedText { get { return _gumpinfo.CroppedText.ToList(); } private set { } }
public List EndGroups { get { return _gumpinfo.EndGroups.ToList(); } private set { } }
public List Groups { get { return _gumpinfo.Groups.ToList(); } private set { } }
public List GumpButtons { get { return _gumpinfo.GumpButtons.ToList(); } private set { } }
public List GumpPics { get { return _gumpinfo.GumpPics.ToList(); } private set { } }
public List GumpPicTiled { get { return _gumpinfo.GumpPicTiled.ToList(); } private set { } }
public List GumpText { get { return _gumpinfo.GumpText.ToList(); } private set { } }
public List HtmlGump { get { return _gumpinfo.HtmlGump.ToList(); } private set { } }
public List ItemProperties { get { return _gumpinfo.ItemProperties.ToList(); } private set { } }
public List RadioButtons { get { return _gumpinfo.RadioButtons.ToList(); } private set { } }
public List ResizePics { get { return _gumpinfo.ResizePics.ToList(); } private set { } }
public List TextEntries { get { return _gumpinfo.TextEntries.ToList(); } private set { } }
public List TextEntriesLimited { get { return _gumpinfo.TextEntriesLimited.ToList(); } private set { } }
public List TilePicHues { get { return _gumpinfo.TilePicHue.ToList(); } private set { } }
public List TilePics { get { return _gumpinfo.TilePics.ToList(); } private set { } }
public List Tooltips { get { return _gumpinfo.Tooltips.ToList(); } private set { } }
public List XmfHtmlGump { get { return _gumpinfo.XmfHtmlGump.ToList(); } private set { } }
public List XmfHTMLGumpColor { get { return _gumpinfo.XmfHTMLGumpColor.ToList(); } private set { } }
public List XmfHTMLTok { get { return _gumpinfo.XmfHTMLTok.ToList(); } private set { } }
#region Click Events
public bool ClickButton(int ButtonID)
{
if (IsExists())
return Stealth.Default.NumGumpButton(Convert.ToUInt16(_gumpidx), ButtonID);
return false;
}
public bool ToggleRadioButton(int RadioID, int Value)
{
if (IsExists())
return Stealth.Default.NumGumpRadiobutton(Convert.ToUInt16(_gumpidx), RadioID, Value);
return false;
}
public bool ToggleCheckBoxButton(int CheckBoxID, int Value)
{
if (IsExists())
return Stealth.Default.NumGumpCheckBox(Convert.ToUInt16(_gumpidx), CheckBoxID, Value);
return false;
}
public bool ChangeTextField(int TextFieldID, String Text)
{
if (IsExists())
return Stealth.Default.NumGumpTextEntry(Convert.ToUInt16(_gumpidx), TextFieldID, Text);
return false;
}
#endregion
#region Static Members
public static GumpClass Create(ushort index)
{
uint Serial = Stealth.Default.GetGumpSerial(index);
ushort Type = Convert.ToUInt16(Stealth.Default.GetGumpID(index));
return new GumpClass(Serial, Type);
}
public static GumpClass LastGump()
{
uint index = GumpCount - 1;
if (index >= 0)
{
return GumpClass.Create((ushort)index);
}
return default(GumpClass);
}
public static uint GetGumpType(uint Serial)
{
int index = GetIndexbySerial(Serial);
if (index > -1)
return Stealth.Default.GetGumpID(Convert.ToUInt16(index));
return 0;
}
public static uint GetSerial(uint GumpType)
{
int index = GetIndexbyType(GumpType);
if(index>-1)
return Stealth.Default.GetGumpSerial(Convert.ToUInt16(index));
return 0;
}
public static int GetIndexbyType(uint GumpType)
{
for (ushort i = 0; i < GumpCount; i++)
{
if (Stealth.Default.GetGumpID(i) == GumpType)
return i;
}
return -1;
}
public static int GetIndexbySerial(uint GumpSerial)
{
for (ushort i = 0; i < GumpCount; i++)
{
if (Stealth.Default.GetGumpSerial(i) == GumpSerial)
return i;
}
return -1;
}
public static uint GumpCount
{
private set { }
get
{
return Stealth.Default.GetGumpsCount();
}
}
#endregion
}
#endregion
#region Context Menu
public class ContextMenu
{
Creature _owner;
public ContextMenu(uint Owner)
{
_owner = new Creature(Owner);
}
public bool Click(uint ClilocID)
{
if ((_owner.IsExists) && (_owner.Distance <= 3))
{
Stealth.Default.ClearContextMenu();
Stealth.Default.RequestContextMenu(_owner.ID);
String Text = "";
if ((Text = Stealth.Default.GetContextMenu()).Trim() != "")
{
Text = Text.Replace("", "¶");
String[] E = Text.Split(new char[] { '¶' });
foreach (String a in E)
{
String[] b = a.Split(new char[] { '|' });
if (Convert.ToUInt32(b[1]) == ClilocID)
{
Stealth.Default.SetContextMenuHook(_owner.ID, Convert.ToByte(b));
Stealth.Default.RequestContextMenu(_owner.ID);
return true;
}
}
}
}
return false;
}
}
#endregion
#region BaseProperty
public class BaseProperty
{
uint _ID;
ClilocRec _clilocrec;
public List Items { get { return _clilocrec.Items.ToList(); } }
public BaseProperty(uint ID)
{
_ID = ID;
Update();
}
private void Update()
{
_clilocrec = GetObject(_ID);
}
public List GetParams(uint ClilocID)
{
Update();
return GetParams(_clilocrec, ClilocID);
}
public String StringParameter(uint cliloc, int index)
{
Update();
return StringParameter(_clilocrec,cliloc,index);
}
public int IntParameter(uint cliloc, int index)
{
Update();
return IntParameter(_clilocrec, cliloc, index);
}
public Double FloatParameter(uint cliloc, int index)
{
Update();
return FloatParameter(_clilocrec, cliloc, index);
}
public uint ClilocParameter(uint cliloc, int index)
{
Update();
return ClilocParameter(_clilocrec, cliloc, index);
}
public bool ClilocExist(uint cliloc, bool checkparams = false)
{
Update();
return ClilocExist(_clilocrec, cliloc, checkparams);
}
#region static Methods
public static ClilocRec GetObject(uint ID)
{
return Stealth.Default.GetClilocRec(ID);
}
public static ClilocItemRec GetProperty(ClilocRec rec, uint cliloc)
{
foreach (ClilocItemRec item in rec.Items)
if (item.ClilocID == cliloc)
return item;
return new ClilocItemRec();
}
public static List GetParams(ClilocRec rec, uint ClilocID)
{
foreach (ClilocItemRec item in rec.Items)
if (item.ClilocID == ClilocID)
return item.Params;
return new List();
}
public static String StringParameter(ClilocRec rec, uint cliloc, int index)
{
try
{
return GetParams(rec, cliloc)[index];
}
catch
{
}
return "";
}
public static int IntParameter(ClilocRec rec, uint cliloc, int index)
{
try
{
return Convert.ToInt32((Regex.Replace(StringParameter(rec, cliloc, index), @"[^0-9]", "").Trim()));
}
catch
{
}
return 0;
}
public static Double FloatParameter(ClilocRec rec, uint cliloc, int index)
{
try
{
return Convert.ToDouble((Regex.Replace(StringParameter(rec, cliloc, index), @"^\d+([\.\,]?\d+)?$", "").Trim()));
}
catch
{
}
return 0.0;
}
public static uint ClilocParameter(ClilocRec rec, uint cliloc, int index)
{
try
{
return Convert.ToUInt32((Regex.Replace(StringParameter(rec, cliloc, index), @"[^0-9]", "").Trim()));
}
catch
{
}
return 0;
}
public static bool ClilocExist(ClilocRec rec, uint cliloc,bool checkparams = false)
{
foreach (ClilocItemRec item in rec.Items)
{
if (item.ClilocID == cliloc)
return true;
if (checkparams)
{
foreach (String P in item.Params)
{
uint cli = 0;
try
{
cli = Convert.ToUInt32((Regex.Replace(P, @"[^0-9]", "").Trim()));
}
catch
{
cli = 0;
}
if (cli == cliloc)
return true;
}
}
}
return false;
}
#endregion
}
#endregion
}