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 - b@ndito

Pages: [1]
1
General UO Chat / The new Razor! and a new community on UO scenario.
« on: September 28, 2012, 01:57:39 AM »
It's been a long time i did not post on these boards so far. But i always liked this community so i would like to let you know about this new project.

My experience with this tool began on late august when this couple of programmers presented their program on my freeshard's forum, i looked at what they had offered and was interesting.

Basically it's a brand new UO assisting program really similar to razor in any part except it's going to be more powerful, supporting scripting (next releases we will have Java supported) and maintaing all Razor's features and ease of use. The automatic macro record system is already really powerful and better than the razor's one!
Yes, it's really user friendly, easy to use and powerful.

Personally i already used it a bit, yesterday i asked for some implementations and fixes to the authors and this morning they released a new version with all i needed!
I'm really enthusiastic about this and want to share this with all of you ;)

Then visit http://www.dgassist.com and give a look.
EDIT, NEW HOST: http://www.runuo.com/products/assistuo/

PS: i forgot to mention they recently has taken part as the new official project for the RunUO community.
the program was called DGA when i knew, but now is AssistUO from RunUO :D

for a quick list of features:

- Vendors;
- Scavenger;
- Organizer and Restock;
- Autoloot;
- Dress and Undress;
- Hotkeys and Macros;
- Skills management;

+ Mini heal and cure self/cross:
- Mortal strike and poison detection;
- Stable and fast spell cast (handling disruptive actions) no matter your ping and/or lag spikes.

+ Targeting:
- Notoriety check options;
- Friends list;
- Party members as friends;
- Enemy target share: undefined, party, guild or alliance;
- Pre-targets for casting.

+ Options:
- Reduce CPU usage;
- Custom profiles;
- Title bar: hits, mana and stamina (text and graphic), weight and custom counters, supporting both .MUL and .UOP file extensions;
- Filters: season, sounds, music, light, repeated messages, etc.
- Check hands before potions (two-handed and balanced items included);
- Spell mode (name, words or both) and color according to flag (harmful, beneficial and neutral);
- Open corpses on range;
- Auto bandage self and auto re-mount;
- Health and flags above people and creatures;
- Stealth steps counter;
- Remove spell fields animations (place colored tiles instead and a smaller wall of stone without editing art files).

2
Rares Collecting / Monster stealables
« on: February 11, 2012, 11:51:54 AM »
With the title i mean those stealable from monsters just in felucca: http://www.uoguide.com/Monster_Stealables So i'm wondering if there's any viable way to simply collect it and make in a script... this "gem of salvation" and "mana draught" looks really interesting to use and/or trade in large scale, also i don't see any script falling in this category around.

3
first of all i want to say that much of what i'm writing is not my work, mainly i'm translating documentation and parts of a really powerful script a user published on my freeshard forum.
this script is able to fill bods, swap it at vendors, choose what are good for rewards, what to fill again and what to trash and do it all until any bod is left (and you book is full of BoDs), also i've been able to insert a sub for bod gathering so basically this scripts goes over until the end of the world (up to now i've been able to run this non-stop for about 70hs).

but that's not much important, what's really interesting is how the author has been able to define reliable rules to script in euo as an OO language.

first of all it relies on creating a defined namespace for every sub called...

since i've not much time left let me translate the first part of the script's documentation, next time i'll describe it more in-deep.
Quote
HOW'S ORGANIZED THE SCRIPT

Since this is a rather complex script, a precise design of subs is necessary.
The script moves on various levels. The upper levels know and use the lower ones, but not vice-versa.
Each function is identified by a prefix, which indicates the level of membership.
You can pretend that they are like packages in Java.

LEVELS:
1 - Elementary functions (prefix: Std)
There are subs who are carrying out tasks simple and basic, with no dependencies on other subs.
It is generally "low level", "reusable", "reentrant" (do not depend on global variables)

2 - logic functions (prefix: Model)
Implement the logic of the script, regardless of configuration problems or the like.
Obeys a "design by contract" logic: claiming pre-conditions guaranteeing post-conditions.
Generally depend on some global variables.
They are the "model" in Model-View-Controller architecture.

3 - GRAPHIC FUNCTIONS (prefix: View)
Create the menu and run the loop.
[...]

4 - executive function (prefix: Ctrl)
They are the link between the GUI and the functions of logic level.
They often have similar names corresponding to the functions of the logic level, but they are on a higher level.
In fact, they require certain parameters from the user if needed, and are involved in the loop start process.
You can think of them as "Whatever that happens when you press a button."
This represents the "controller" in Model-View-Controller architecture.

making a quick example on how it works, before going:

when creating a menu in this way he first sets the variables, then call the pre-designed menu passing those variables as parameters, when menu is shown a sub is able to cycle every variable given before and store it.

in all this process the scripter just need to draw the menu and call it properly, other part is all done by the script/library i'll show you.
i repeat that way of scripting through this library is very pwerful and reliable, hope you can understand what i  mean and can be useful for much expert scripters.

4
Scripting Chat / Clicking trees
« on: January 20, 2011, 10:31:50 AM »
On the freeshard i'm currently playing has been started a weird event, players have to click bushes, trees and various other statics in order to find the hidden treasure, the only way to find statics in easyuo is the tile get function but it actually returns only coordinates of an item, then the question is, there is any simple way to make mouse clicks directly by tile coord or i have to convert game's tile x/y to screen x/y? this would be terrbly complex, as every static has a z coord and different layer size...

5
New member introductions / Need to excuse me and give a presentation
« on: December 17, 2010, 09:11:02 PM »
First of all... forgive me for the late presentation  :-\ and the poor english, not my born language as i'm italian.
I've been lurkingf SUO forum for over an year and noticed just now that i gave no presentations at proper time, for some reason i thought have already done, so i'll do just now...

I'm an UO player addict since 2001, started on an italian sphere freeshard where i knew the future developer of a RunUO freeshard he opened later and i moved consequently.
As a good UO addicted i spent some months on Europa and have experienced much of the ultima game series.
My main UO experience anyway has occured through 2002 and 2004 while i played in many italian and american RPG freeshards along my friends, you may know rebirth and second age shards. I got my best memories there...
Between 2004 and 2006 I played some time on european WoW official shards, but after awhile i got annoyed of that repetetive system and after a failed adventure on an RPG WoW server, i set back on my second UO freeshard, it was late 2008.
Wanting to begin quickly building my characters and richness i started unveiling EUOs and programming mysteries, there borned my passion for computer engeneering that led me to university studies.

Actually i'm a computer engineering student, and spend my spare time as RunUO scripter for the shard, also i have experience in EUO and LUA/OpenEUO scripting.

Sorry if this post may look a bit messy, i made many corrections while typing.

6
ScriptUO Questions and Answers / In the hope SUO parser would develop
« on: December 12, 2010, 07:52:29 PM »
Last summer i was looking for a way to change the colour of my hooded shroud on the RunUO freeshard in wich i play, since it's not more possible to color it through dye tubs.
I spent some time playing with client's memory addresses and i succeeded in it...... unfortunately when i tried to move or wear it, the shroud reverted to the original colour, in fact i was changing just client's memory not sending packets or hacking the server someway how should i needed ;D
(i know, quite a noobish way to tell my poor knowledge on client-server communications)

Anyway with those experiments i found many memory addresses containing much interesting variables like character coordinates or statistics (IF: resistances in status or totalgold) as those showed in easyuo as system vars.
since it was my really first attempt of C++ 'reverse engeneering' or 'cracking' as you prefer  :-\  i'm sure there are actually better techniques to find  out such things, but if you think those addresses could be helpful to you let me know and i could provide them... i'm also interested in improving my scripting skills, if you know some good way to reverse engeneer UO client's let me know please

Obviously i'm not aiming at hacking the client since i wouldn't be asking that here, but i'm interested helping developing a parser even if i have just little experiences in it as a project at school's time.

Sorry for my poor english, i'm just looking an useful way to be helpfull to this amazing community  :D

7
Submit your Script / B@ndito's tamer assistant
« on: December 09, 2010, 09:06:18 AM »
Another script of mine i made it 1 year ago and never changed, it still works pretty well to me.
Again, it was designed for a freeshard but bandages type ID should be the same on OSI, sorry for poor english.

Description and explanations contained into the script (note for scripters: variable naming in italian).
I'm currently supporting this and available to questions/requests.

Code: [Select]
;-#=#=#=#=#=#=#=#=#=#=#=#-
;Name: B@ndito's Tamer Assistant
;Made by: B@ndito
;Published for: ScriptUO.com
;Released on: 12/9/10
;-#=#=#=#=#=#=#=#=#=#=#=#-

;   ,,,,,,,,,,,,,,
;    IMPORTANT !
;   ''''''''''''''
;    1. Keep your backpack always opened.
;    2. Pet's health bar have NOT TO BE MOVED after running the setup
;        never cover it with other gumps .
;
;
;    Description:
;    ------------
;    # This script is meant to support my other scripts, so it's possible to use it along other scripts.
;      Keep in mind that even if it has been designed to work along other scripts, drag&drop can't be
;     checked when running parallel scripts and this could mess up something without proper checks.
;    # It can be easily used anyway as a standalone to heal a single pet
;      It mainly uses OCR to calculate percentile/quantity of pet's HP and heal it, using both bandages
;       and spells if choosen though not breaking any other cast
;

;=============================== S E T T I N G S ==================================

;--- AUTO-PATHFIND ---
;    choose if you want the script to pathfind to the pet if you are too distant for bandaging.
;    script will temporary control character movements to reach the pet

set %autopathfind #false   ;(#TRUE or #FALSE)

;--- HALING VARIABLES ---
;    choose HP % to start healings
;    NB: HP calculations may have a 3% error calculation
set %percentuale 75       ;suggested values for total hp (5 - 95%)
                          ;85: between 400 - 500 hp
                          ;75:between 300 - 400 hp

;    to heal poisoned pet ignoring HP%
set %curapoison #TRUE   ;(#TRUE o #FALSE)


; _ _ _ _ _ _OPTIONAL _ _ _ _ _ _ _

;    le seguenti variabili sono per le funzioni opzionali,
;    lasciale come di default se usi lo script insieme al Leather Farmer.

;---SPELL CASTING ---
;    Set #TRUE to cast spells along bandages
set  %Healwithspell #true ; DEFAULT: #FALSE

;    if %healwithspell #TRUE, choose the heal method (just type a number): 1 magery, 2 chivalry, 3 spellweaving
set  %healmethod 1

;--- PAUSE KEY ---
;    Set the pause key, you can leave it empty if not interested
;    Press again to begin again...
set %haltkey p

;--- RAZOR ---
;    if you want to use a razor macro tu heal, set to #true and type macro name
;    Useful if you use this script in parallel with other scripts.
set %razor #false
set %macrorazor macro1

;   END OF MANUAL SETUP

;=========================================================================================

;-----Script begins here don't modify further-----

;--------------|
gosub autosetup
;--------------|

  mainloop:
  gosub HealthbarScan %contposX %contposY %PetHP
  if %HP < %percentuale || %stato = 3 && %curapoison = #true || %stato = 1
      {
      gosub checkaids
      if #result = #true
          {
          if #targcurs = 1
             gosub waitcurs 0
          gosub pathfind
          gosub curapet
          }
      }
  onhotkey %haltkey
      {
      event SysMessage BTA script: paused
      wait 20
      pausa:
      onhotkey %haltkey
               {
               event SysMessage BTA script: playing
               goto mainloop
               }
      goto pausa
      }
  goto mainloop
;=============================================================================
sub curapet
cura:
  if %razor = #true
  {
  msg -macro , #spc , %macrorazor $
  wait 45
  return
  }
  namespace push
  namespace global action
  ;event sysmessage Pet health: %HP , %
  set !bendaPet #true
  if #targcurs = 1
     gosub waitcurs 0
  set #lObjectID %aids
  event Macro 17
  target 5s
  set #ltargetid %petid
  event macro 22

  if %Healwithspell = #true
     {
     gosub curespell
     goto ritorna
     }
  wait 45
  ritorna:
  namespace pop
return

;=======================================================
sub curespell

  if #targcurs = 1
     gosub waitcurs 0
  if %stato = 3
     goto trypoison
  if %healmethod = 1
          {
           event macro 15 28
           target
           set #ltargetid %petid
           event macro 22
          }
  if %healmethod = 2
          {
           event macro 15 202
           target
           set #ltargetid %petid
           event macro 22
          }
  if %healmethod = 3
          {
           event macro 15 602
           target
           set #ltargetid %petid
           event macro 22
          }
  trypoison:
  if %healmethod = 2
          {
           event macro 15 201
           target
           set #ltargetid %petid
           event macro 22
          }
  if %healmethod = 1
          {
           event macro 15 10
           target
           set #ltargetid %petid
           event macro 22
          }
return

;================================================
;wait for cursor not targeting, and returns a boolean
  sub waitcurs

  if %0 = 2
      set %waitTimeout #scnt2 + %2
  else
      set %waitTimeout #scnt2 + 500 ;valore in decimi di secondo (50s)
  while #targcurs <> %1
  {
  if #scnt2 > %waitTimeout
     return #false
  sleep 3
  }
  if %1 = 0
     wait 2

  return #true
;================================================
  sub HealthbarScan
  namespace push
  namespace local HealthbarScan , #SYSTIME
  set !lpc #lpc
  set #lpc 500
  set !a %1 + 37
  set %2 %2 + 43
  savepix !a %2 1
  set %1 n/a
  str pos 16229962\16229706\6502655\\6502911\\4894463\\4894207\\4390763 #pixcol
  if #strres <> 0
     set %stato #strres / 18
  set !mod 24
  repeat
  {
  set !mod ( !mod + 1 ) / 2
  set !sec !sec + !mod
  set !x ( 100 * ( !sec - 1 ) / 23 + 3 ) * 98 / 100 + !a
  savepix !x %2 1
  if #pixcol in 3746303\3221908\2695589\2695539\3741902\3744181\3217556\3217564\1579156\2173299\1052746\1579140\1577059\2166924\2166916\2691220\2166907\2166965\1054819\1577034\1579131\1577050\2168931
     set !sec !sec - !mod
  }
  until !mod = 1
  set %HP 100 * !sec / 24
  set #lpc !lpc
  namespace clear
  namespace pop
  return #result
;================================================
sub pathfind
  riprova:
  finditem %petid G_
  if #findkind = 1 && #finddist > 2
         {
         if %autopathfind = #true
            {
            set %pathTimeout #scnt2 + 60 ;6s
            event pathfind #findx #findy
            wait 3
            if You_are_frozen in #sysmsg
               {
               wait 2s
               goto riprova
               }
            while #charposx <> #findx || #charposy <> #findy
                  {
                  if #scnt2 > %pathTimeout
                     goto riprova
                  sleep 5
                  }
            }
         else
            {
              event sysmessage BTA Script: Too distant from the pet! Script waiting you move further...
              set %pathTimeout #scnt2 + 500 ;50s
              finditem %petid G_
              while #finddist > 2
                  {
                  if #scnt2 > %pathTimeout
                     return
                  sleep 5
                  finditem %petid G_
                  }
            }
         }
return
;================================================
  sub checkaids

  finditem ZLF C_ , #backpackid
  if #findstack = 0
    {
    event ExMsg #charID 2 38 Nessuna benda trovata!
    wait 3s
    return #false
    }
   if #findstack < 25 && #findcnt < 2
   event sysmessage BTA Script: WARNING! You have just #findstack bandages!
   set %aids #findid

  return #true

;================================================
  sub autosetup

  gosub checkaids
  if #result = #false
      {
       display ok you need bandages in your backpack $ restock and play again the script.
       halt
      }
  retarget:
  display ok Drag the pet's healthbar where you prefer, $
          + Remember NOT TO MOVE healthbar while executing $
          + $ You have 6 seconds.
  for %i 1 6
  {
  wait 1s
  event exmsg #charid 3 50 %i
  }

  if #contname <> status_gump
     {
     display ok Can't recognize health bar! $
             + If you are sure you had dragged the right bar $
             + close it to reset EUO's varables.
             + $ $ Click ok to repeat  $
     goto retarget
     }
     event exmsg #charid 3 73 Setup complete!
  set %petid #contid
  set %contposx #contposx
  set %contposy #contposy
  ;set %aidtime ( ( 11 - ( #dex / 20 ) ) * 10 )
  set #LPC 100

  return

Note: uses HealthbarScan sub by Laradel

8
Inactive Submissions / Happy textiler
« on: December 07, 2010, 11:01:57 PM »
I'm releasing here a script of mine for the first time, so i'm asking sorry in advance if missing something (note for scripters: some labels and documentation inside the script is italian).

What does:
Actually transforms any kind of textile resource, passing throught every processes, into final bolts or cloths (selectionable).

How to use:
Since i'm a passionate of automatization, this script does not require any setup or any kind of knowledge to be used.
You can still easily customize some functions in it, locate instructions in the beginning of it to figure out.

What you need:
a container for your resources, a loom a spinning wheel all into your house, scissors if you choose to cut bolts into cloths.

Future planning: multiple loom - spinning whell usage to improve performances.

Actually i'm available for any support or questions, keep in mind i did it to work on a freeshard ML server, anyway should not give trouble to OSI or other freeshards users since i checked type IDs and seems to be the same.

9
Scripting Chat / Designing menu's with file' image
« on: December 07, 2010, 10:28:07 PM »
I've always used the EasyUO menu designer for my scripts but i think that placing images where needed may improve readability and would make menus definitely better looking and less eye-stressing...
I looked on EUO wiki for informations but haven't been able to manage multiple images (IE: i wanted to create icons for my resource gatherer menu), also easyuo forum boards did not give any results.
Now i'm asking here to you if someone can write me some lines to find the way to properly do this, or some script snippet to figure out it.






sorry for the poor english  Kiss

10
Feedback / Collapsible subs
« on: July 13, 2010, 04:47:37 AM »
Actually i'm using another editor instead of suo with a customized config made to recognise easyuo labels... i've found here a good feature that you may consider...

the editor recognise sub from sub starting from the first sub and closing it to the last return the parser would find before next sub start. it permits to highlight row numbers on the left column, and also puts a
  • sign to collapse the sub.


i try to show you an example,
sight before collapsing.
...
row 110
                 [ - ] sub example
                        set %variable ( somemaths )
                        if %variable = value
                        return %variable
row 115           set %anothervar (math)
                        if %anothervar = value
                        return %anothervar
                        return error
row 120
                 [ - ] sub anothersub
...

collapsed sub sight


...
row 110
               [ + ] sub example
row 120
                [ - ]  sub anothersub
...

i hope i to have explained enough with my poor english and you may find it usefull to improve SUO  :D
this technique is quite useful but limited if some code is beyond the last return, i.e. if you bump back the parser with a goto

11
Scripting Chat / Radar script
« on: April 25, 2010, 09:46:38 AM »

12
Script Debug / Rail engine (complex)
« on: March 12, 2010, 01:46:12 AM »
i made a new rail writer based on persistent variables, it works just like others that saves variables in a file but is quicker (needs about 1-2 seconds to write a 15 steps rail againts the 35 of CEO's), it also offer the possibility to change to or from a part of the rail and more, i think it's a great script but i'm not really satisfied of the reading/running subs i made up.
an axample of a variable written is:

<AlganderPersistentRail>TS:11Facet:1|X:5484Y:567|X:5484Y:573|X:5484Y:577|X:5484Y:583|X:5481Y:589|X:5474Y:594|X:5468Y:597|X:5467Y:603|X:5464Y:609|X:5458Y:615|X:5451Y:616|

the engine subs i put up

Code: [Select]
set %numberofplaces 3


gosub check_existing_rails
for %n 1 %numberofplaces
    {
    if %esiste_rail . %n = #false
       goto skip_rail
    set %string * . rail . %n
    str del %string 1 23
    set %string #strres
    gosub pickvalue TS: f
    set %tot_steps #result
    set %ts_ . rail , %n %tot_steps
    gosub pickvalue facet: |
    set %facet #result
    for %i 1 %tot_steps
        {
        gosub pickvalue |x: y
        set %x . %i , rail , %n #result
        gosub pickvalue y: |
        set %y . %i , rail , %n #result
        }
    skip_rail:
    }

display caricate tutte le rail
;halt
for %f 1 %numberofplaces
if %esiste_rail . %nruneatt = #true
   {
   for %i 1 %TS_ . rail , %nruneatt
   event pathfind %x . %i , rail , %n %y . %i , rail , %n
   }


sub pickvalue
;|^|%1 etichetta del valore %2 delimitatore |^|
;|^|cancella etichetta e valore |^|
;|^|ritorna il valore trovato |^|
;|^|false se non viene trovato niente |^|
set %currpos 0
str len %1
str del %string 1 #strres
set %string #strres
str len %string
set %fine #strres
str left %string 1
while %2 notin #strres
{
set %currpos %currpos + 1
str left %string %currpos
if %2 in #strres
      {
        set %currpos %currpos - 1
str left %string %currpos
set %fndval #strres
str del %string 1 %currpos
set %string #strres
return %fndval
}
if %currpos = %fine
break
}
return error

sub check_existing_rails

for %r 1 %numberofplaces
    {
    set %prova_string * . rail . %r
    if <AlganderPermanentRail> notin %prova_string
       set %esiste_rail . %r #false
    else
       set %esiste_rail . %r #true
    }
return

sorry for italian naming  but i did not thought of publishing it... if someone could read it and help me making it more efficient i would be really grateful.
i have mainly problems of pathfinding (doesn't arrive at the spot, has problem with stairs, skips spots)...
         

13
ScriptUO Questions and Answers / Diff. tool issue
« on: March 06, 2010, 01:43:06 PM »
first of all thanks for publishing this great program, i used a couple of text editor in the past but nothing suited my tastes as SUO.

Now my little question, using the Diff... tool in the Edit menu i see that SUO auto-detects my tortoiseSVN installed (and that's good), but if i give the two paths of files needed and press execute it opens the tortoisemerge program asking again for the paths, this losing all the advantages of it. Now i'm asking: is that a tortoise issue and if, there's a way to fix it?

some tech info, maybe the version i'm using is not fully supported:

TortoiseMerge 1.6.5, Build 16974 - 32 Bit , 2009/08/20 08:13:46
libsvn_diff 1.6.5,
apr 1.3.8
apr-utils 1.3.9

OS: M.soft Vista - sp2

Pages: [1]