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 - Orich

Pages: [1]
1
Stealth scripts / [V6, C#] oEggs - Orich's Medusa Egg Farmer
« on: October 20, 2013, 12:16:35 AM »

oEggs v0.0.0.0.0.1alpha
The world's only Medusa Egg Farmer (since EUO is ... < Stealth    :o)

I wrote this at 3:00am today for a friend ... She said it seemed to work well, but it's written like dogshit.  I'm releasing it because, well, dxrom just released a script and I can't let him have the limelight for more than 15 minutes.


Important things :

1.  You must have ScriptDotNet.DLL in the same directory as the .EXE

2.  If you don't want to compile it yourself follow these steps :
            STEP A:   Go to the link below "BitBucket Repository" (Orich's Scripts)
            STEP B:   Click "Source" link in the top-middle bar
            STEP C:   Navigate through the folders as follows :  oEggs -> oEggs -> bin -> Debug
            STEP D:   Download oEggs.exe (and ScriptDotNet.DLL, but you should get the latest copy from the main bitbucket repository)
            STEP E:   Run stealth, log in, use script

3.  If you experience bugs ... Not shocking, since I didn't test this (literally, I didn't test it once)   Oh and it's written horribly.. did i mention that?

4.  If you don't experience bugs ... I might be Jesus.

5.  I'm really, really tired right now.

Features

It uses flutes
Targets snake (closest one to you)
Targets nest (closest one to you)
Waits for snake to do its thing
hides you
stealths you
walks to egg
grabs egg
rinse repeat


Resources

Stealth Client Topic   Stealth SUO Topic    Main Stealth Release Thread
Orich's ScriptsBitBucket RepositoryOrich's Scripts Library
Bug TrackerBitBucket Issue Tracker   Report Issues / Bugs Here!
Stealth HomeStealth HomeStealth Webpage & Forums (English & Russian)
Video Tutorial   oRune Tutorial TopicBasic C# Scripting Tutorial

2
C# Runebook Copier + Tutorial

Well here it is folks.   A full 1 hour video of me coding a simple Runebook Copier in C# ... With Commentary.  Lots of it.

The project is built from the ground up with as much detail as I can give for starting your very first C# script.


It is pretty late ... and I'm tired.  Leave questions/concerns here.


EDIT:   I've included the VERY unfinished ScriptAPI.cs wrapper file in the project to get people started.  Remember, it is very incomplete ... so don't judge.

------------------------------------------------------------------------------------------------------------------------------------------
Stealth Client Topic   Stealth SUO Topic    Main Stealth Release Thread
oRune Project   oRune BitBucket Project    Full VS2012 Source Code
Stealth HomeStealth HomeStealth Webpage & Forums (English & Russian)
Video Tutorial   Youtube TutorialNovice C# Scripting Tutorial

3
I am extremely busy over the next 7-10 days.   Since I won't have enough time for the really cool idea I have for a tutorial -- I wanted to leave it to you guys on what you'd like to see in the interim until I have more time.

Are there any small/medium-sized projects you'd like to see coded in C#?    Crome mentioned an external guild-chat application, but this would have very little interaction with UO mechanics other than Journal manipulation.

Whichever idea is the best "learning project" will be written and released early next week.

-Orich


Edit:  Chances are I'll code the whole thing on video and post it as a preliminary tutorial.

4
Stealth Snippets\Library / [C# Example] Events in Stealth
« on: October 09, 2013, 10:02:45 PM »
With tonight's release of my .NET DLL for Stealth, I wanted to include an example of how Stealth events are handled.


For this example, we are going to create an event that tells us when a buff has become active or inactive.

First we must create a function that adheres to the delegate prototype
Code: [Select]
// ID = Person who is affected
// Attribute_ID = ID of the buff
// IsEnabled = Boolean, 0=Turned Off ; 1=Turned On

void OnBuff_Debuff(uint ID, ushort Attribute_ID, bool IsEnabled) // Adheres to  "public delegate void OnBuff_DebuffSystemHandler(uint ID, ushort Attribute_ID, bool IsEnabled);"
{
   String buffStatus = (IsEnabled) ? "Turned On" : "Turned Off";
   String outputString = String.Format("Buff ID:{0} has just {1}", Attribute_ID, buffStatus);

   Stealth.Script_AddToSystemJournal(outputString);
}

Now that we have the function we want to run when the event is triggered, all we need to is set the event to our function, and enable the event.

Code: [Select]
//  ... somewhere in your codebase

Stealth.OnBuff_DebuffSystemEvent += OnBuff_Debuff;
Stealth.Script_EnableEvent(TPacketEvent.evBuff_DebuffSystem);



VIOLA!   Now whenever we receive a buff (or debuff), and it falls off, Stealth will display our string in its System Journal window :)

List of Events / Delegate Prototypes

Code: [Select]
// All are typeof(event)
        OnItemInfoEvent;
        OnItemDeletedEvent;
        OnSpeechEvent;
        OnDrawGamePlayerEvent;
        OnMoveRejectionEvent;
        OnDrawContainerEvent;
        OnAddItemToContainerEvent;
        OnAddMultipleItemsInContainerEvent;
        OnRejectMoveItemEvent;
        OnUpdateCharEvent;
        OnDrawObjectEvent;
        OnMenuEvent;
        OnMapMessageEvent;
        OnAllowRefuseAttackEvent;
        OnClilocSpeechEvent;
        OnClilocSpeechAffixEvent;
        OnUnicodeSpeechEvent;
        OnBuff_DebuffSystemEvent;
        OnClientSendResyncEvent;
        OnCharAnimationEvent;
        OnICQDisconnectEvent;
        OnICQConnectEvent;
        OnICQIncomingTextEvent;
        OnICQErrorEvent;
        OnIncomingGumpEvent;
        OnTimer1Event;
        OnTimer2Event;
        OnWindowsMessageEvent;
        OnSoundEvent;
        OnDeathEvent;
        OnQuestArrowEvent;
        OnPartyInviteEvent;


And their delegate prototypes :
Code: [Select]
        public delegate void OnItemInfoHandler(uint ItemID);
        public delegate void OnItemDeletedHandler(uint ID);
        public delegate void OnSpeechHandler(String Text, String SenderName, uint SenderID);
        public delegate void OnDrawGamePlayerHandler(uint ID);
        public delegate void OnMoveRejectionHandler(ushort Xorig, ushort Yorig, Byte Dir, ushort XDest, ushort YDest);
        public delegate void OnDrawContainerHandler(uint ID, ushort ModelGump);
        public delegate void OnAddItemToContainerHandler(uint ObjID, uint ContainerID);
        public delegate void OnAddMultipleItemsInContainerHandler(uint ContainerID);
        public delegate void OnRejectMoveItemHandler(Byte Reason);
        public delegate void OnUpdateCharHandler(uint ID);
        public delegate void OnDrawObjectHandler(uint ID);
        public delegate void OnMenuHandler(uint DialogID, ushort MenuID);
        public delegate void OnMapMessageHandler(uint ID, int centerx, int centery);
        public delegate void OnAllowRefuseAttackHandler(uint ID, bool Attack_OK);
        public delegate void OnClilocSpeechHandler(uint SenderID, String SenderName, uint ClilocID, String TexT);
        public delegate void OnClilocSpeechAffixHandler(uint SenderID, String SenderName, uint ClilocID, String Affix, String ClilocTex);
        public delegate void OnUnicodeSpeechHandler(String Text, String SenderName, uint SenderID);
        public delegate void OnBuff_DebuffSystemHandler(uint ID, ushort Attribute_ID, bool IsEnabled);
        public delegate void OnClientSendResyncHandler();
        public delegate void OnCharAnimationHandler(uint ID, ushort Action);
        public delegate void OnICQDisconnectHandler();
        public delegate void OnICQConnectHandler();
        public delegate void OnICQIncomingTextHandler(uint uin, String Text);
        public delegate void OnICQErrorHandler(String Text);
        public delegate void OnIncomingGumpHandler(uint Serial, uint GumpID, uint X, uint Y);
        public delegate void OnTimer1Handler();
        public delegate void OnTimer2Handler();
        public delegate void OnWindowsMessageHandler(uint lParam);
        public delegate void OnSoundHandler(ushort Sound_ID, ushort X, ushort Y, ushort Z);
        public delegate void OnDeathHandler(bool Dead);
        public delegate void OnQuestArrowHandler(ushort fQuestArrowX, ushort fQuestArrowY, bool fQuestArrowActive);
        public delegate void OnPartyInviteHandler(uint Inviter_ID);




5
Stealth archive / [Release] Stealth .NET DLL [DLL Updated 11/27/13]
« on: October 09, 2013, 08:38:35 PM »
Stealth v6.0 +


Following the release of Stealth v6.0 -- I am also proud to officially release the Stealth .NET DLL library.

Features

 - Built on .NET 4.5 (Requires 4.5)

 - ~99% Compliant with the Script.DLL API Standard [Some subtle differences]

 - External application support
      * You can bypass the "Open" -> "Play" mechanism in the Stealth GUI and run any Script externally.  The DLL handles the rest.

 - Supports most (if not all) .NET CLI Languages (VB, C#, etc.)

 - Included SafeInvoke() extension for thread-safe calls between the UI thread and Script thread.
      * For WinForms Users

Code: [Select]
using System;
using ScriptDotNet; // Use the ScriptDotNet Namespace

namespace MyFirstConsoleScript
{
    class Program
    {
        static void Main(String[] args)
        {
            // Wait until Stealth is connected to an Ultima Shard
            while (Stealth.Script_GetConnectedStatus() == false) ;

            // Print a string to the Stealth System Journal
            Stealth.Script_AddToSystemJournal("Hello World to Stealth GUI!");

            // Print a string to the Ultima Online Game Client Window!
            Stealth.Script_ClientPrint("Hello World to Game Client");
        }
    }
}

How To Use

 - In your project under "Solution Explorer", right click "References"
 - Select "Add Reference"
 - On the left hand side, click "Browse" tab
 - On the bottom right click "Browse" button
 - Locate the ScriptDotNet.DLL
 - Done!

Once you see "ScriptDotNet" under References (in Solution Explorer), double click it and explore the DLL.  You'll find all member functions and properties that you require.


Lazy ChangeLog
10/27/2013
  - Script_GetStaticTileData() fixed
  - Script_GetAboutData() fixed
  - Many other fixes I didn't keep track of
11/27/2013
  - Support for Script_GetContextMenuRec , Script_GetMultis (requires Stealth 6.1.4 or greater)
  - Various bug fixes

Resources

Stealth Client Topic   Stealth SUO Topic    Main Stealth Release Thread
DLL DownloadBitBucket DLL BinariesLatest Public DLL binaries
Bug TrackerBitBucket Issue Tracker   Report Issues / Bugs Here!
Stealth HomeStealth HomeStealth Webpage & Forums (English & Russian)
Video Tutorial   oRune Tutorial TopicBasic C# Scripting Tutorial


Note:  Not 100% of the functions in this DLL have been tested.  This doesn't mean anything dangerous -- It just means sometimes something may not work right.  I will be very diligent to fix bugs, I just need to know about them :-)   Please don't hesitate to let me know what to fix.

6
Stealth archive / [Release] Stealth v6.5 - Updated 06\24\14
« on: October 09, 2013, 11:21:58 AM »
Stealth v6.0


Thanks to the extreme hard work of Vizit0r and the rest of the stealth team, I am happy to introduce Stealth v6.0 -- The most powerful UO client available.


Here is a brief overview of the Version 6.0 feature set:

For Everyone:

 - Standalone UO Client [Does not require Client.exe to operate]
 - Support for Classic Client & Enhanced Client (new versions of EC not supported ... yet?)

 - Support for Encrypted and Non-Encrypted Clients
 - Support OSI and the vast majority of player shards
 - All-In-One Multi-Client Solution (Connect all of your accounts in one instance of Stealth)
 - Dynamic Client Version Emulation (Don't like upgrading on Patch Day? No problem, Stealth handles that.)
 - Native support for UOP and MULs

 - Ultima Client Helper Application (ClientDLL) for UOAssist / Razor-type functionality

 - Auto-Upgrade Mechanism (Always keep latest version of Stealth installed)
 - Built in mapping system / coordinate tracking

 - Anti-Encryption Mode included for FreeShard Implementations (Abyss, Vetus-Mundus, etc.)

 - Razor Negation Feature

For Scripters:

 - Built-in Pascal Scripting Language
 - External scripting application support via Unmanaged and Managed (.NET) libraries
      * Yes -- this means you can write scripts in whatever language you prefer

 - Supported Delphi, Python and C# wrappers
 - Extensive packet logging / debugging configuration options

Improvements from v4.0

 - UOP support
 - Event handling system re-written
 - Fixes for all reported broken functions (Cast, Primary/Secondary Abilities, etc.)
 - Pascal Script no longer supports TST GUI Elements (hooray)
 - Experimental EC-Client Mode for EC scripters
 - Gump subsystem re-written (and is amazing)
 - Infinite improvements and optimizations to Game interface

 - And lest we forget, some extremely uber Scripting support

[And the list goes on ...]


ChangeLog
RC5:
        Imported TIni class for Pascal Script
        Fixes in "World Tab"
        Many fixes for Script.DLL
          - Added Script_GetStaticTilesArrayEx to Script.DLL
          - Added Script_GetLandTilesArrayEx to Script.DLL
        Various other fixes.
RC5 V2:
        Some big fixes.
RC5 V3:
       7.0.33.1 apocalyptic patch fix      
RC5 V4: 724 (e26aca7)
       Graphic glitches fixed
       Packet optimizations
       Tooltip rework
       Client disconnects fixed

v6.1.0 - Full Version
       CombCount hint / handler fixed
       ClientDLL's client.exe titlebar writer re-worked

       A myriad of other fixes and improvements (seriously)
v6.1.1
       Stealth auto-update now working
       RenameMobile() function now working
       ConvertCharArray2String() functions now available in Pascal Script (again)
       TStaticTileData now includes Weight field
       Fixed client caption drawing
       Fixed client.dll problems
       Speech keys fixed
       UO Send Text fixed
       Menu fixes
v6.4
       Big Hotfix for API
       Update of Primary and Secondary Abilities      

       ... Many more improvements/fixes

v6.5
       Hotfix on Event "EvTimer"
       Hotfix on ICQ via API
       Event ICQDisconnect disabled for now
       Hotfix on incorrect mapdiff handling
       Hotfix on uo files handling
       Hotfix on Threading via API (Multiprofile crash)
       New Version of API in Delphi including a new wrapper file



Resources

FAQScriptUO Stealth FAQ Topic     Frequently Asked Questions
DownloadBitBucket Stealth BinariesLatest Releases
Bug TrackerBitBucket Issue TrackerReport Issues / Bugs Here!
Stealth HomeStealth HomeStealth Webpage & Forums (English & Russian)
Video Tutorial   Starter TutorialSetup & Configuration Tutorial

7
These functions don't seem to work? Is there a way to make them work?

8
New member introductions / After a 10 year vacation ... I've come home.
« on: August 01, 2013, 12:45:10 AM »
I played Ultima Online from 1998-2003/2004 on Atlantic. I had 3 or 4 accounts at the time, and decided to quit because of the intense amount of hacking going on and lack of any support by GMs.

Soon thereafter I played World of Warcraft beta, and hardcored that game until the end of the Lich King expansion. I (shouldn't be) proud to say I was in two different Top 25 US guilds and always prided myself on being a top tier player.

After WoW, I never played any game to that intensity again. I've tried all the major MMOs, and hardcored them for 1-2 months but they fizzled quick. SWTOR, Aion, Tera, Guild Wars 2, etc.etc. Played them all to max level (except Aion, but if you played you know why) and end-game.

I was into the competitive scene of Heroes of Newerth for a couple of years. Was a 1900 MMR player. I've since abandoned the MOBA scene all but for Smite, which is a casual guilty pleasure that I play with my RL friends.

As far as my return to Ultima Online... I always considered this the best MMO ever made.  I'm Home!!

Pages: [1]