Official ScriptUO EasyUO Scripts > Script Snippets

Context menu handler subs

(1/1)

TrailMyx:
Here's a set of subs I put together that will search the text of the context popup menu (exevent popup) and select the proper item.  I have searched the land to find most of the context menu entries, but I probably have forgotten a few, so if you find one, let me know and I'll add it to the master list.  This is independent of any OCR program out there, so you won't have any code dependencies.

Note:
You have to run SetupContextValues at the beginning of your scripts execution to setup all the %CONTEXT_XXX.. values.

Also, since this uses pixcol you must keep the screen clear of clutter, otherwise the script will claim it can't find the requested context line.

Here's a bit of test code:

--- Code: easyuo ---gosub SetupContextValuesset #TARGCURS 1repeatuntil #TARGCURS = 0gosub HandleContextMenu NULL #LTARGETID %CONTEXT_Buy ; "Vender buy!" 
Also, this has been setup so you may call it as a separate subroutine:

--- Code: easyuo ---set %context_subs c:\context_subs.txt call %context_subs SetupContextValuescall %context_subs HandleContextMenu #CHARID %CONTEXT_Open_Paperdoll 
Here's the code you'll need to include in your script:

If you add it directly, then you don't need the "gosub %1" and "exit".  Those are there to allow these subs to be "call"ed.

--- Code: easyuo ---gosub %1exit;-------------------------------------------------------------------------------sub SetupContextValues; For #CHARID -------------------------------------------  set %CONTEXT_Open_Paperdoll 3156756  set %CONTEXT_Open_Backpack 3428334  set %CONTEXT_View_Quest_Log 3126406  set %CONTEXT_Quest_Conversation 3730488  set %CONTEXT_Cancel_Quest 1535584  set %CONTEXT_Toggle_Insurance 6427264  set %CONTEXT_Auto_Renew_Insurance 10565554  set %CONTEXT_Cancel_Renewing 8578676  set %CONTEXT_Toggle_Monster_Title_Display 6959492  set %CONTEXT_Toggle_Quest_Item 3603586  set %CONTEXT_Leave_House 2202616  set %CONTEXT_Totals 744812 ; alexandria; -------------------------------------------------------; Various commands:  set %CONTEXT_Buy 200250  set %CONTEXT_Sell 260988  set %CONTEXT_Open_Bankbox 2793788  set %CONTEXT_Talk 208296  set %CONTEXT_Stable_Pet 1059800  set %CONTEXT_Claim_All_Pets 3073470  set %CONTEXT_Ask_Destination 4153934  set %CONTEXT_Accept_Escort 2171844  set %CONTEXT_Command_Kill 3025036  set %CONTEXT_Command_Follow 2998872  set %CONTEXT_Command_Guard 3695576  set %CONTEXT_Command_Stop 3084560  set %CONTEXT_Command_Stay 3438018  set %CONTEXT_Add_Friend 1757318  set %CONTEXT_Remove_Friend 2870250  set %CONTEXT_Transfer 593758  set %CONTEXT_Release 753348  set %CONTEXT_Tame 2967380  set %CONTEXT_Hire 271802  set %CONTEXT_Lock_Karma 1628904  set %CONTEXT_Tithe_Gold 1504152  set %CONTEXT_Resurrect 1040922  set %CONTEXT_Add_To_Spellbook 4435612  ; -------------------------------------------------------; Training commands:  set %CONTEXT_Train_Alchemy 2851050  set %CONTEXT_Train_Anatomy 2802984  set %CONTEXT_Train_Animal_Taming 4605822  set %CONTEXT_Train_Animal_Lore 3779370  set %CONTEXT_Train_Archery 2127964  set %CONTEXT_Train_Arms_Lore 2746638  set %CONTEXT_Train_Blacksmithy 5406112  set %CONTEXT_Train_Bowcraft_Fletching 9229098  set %CONTEXT_Train_Camping 3103050  set %CONTEXT_Train_Carpentry 3895634  set %CONTEXT_Train_Cartography 4174618  set %CONTEXT_Train_Chivalry 3031212  set %CONTEXT_Train_Cooking 2505550  set %CONTEXT_Train_Discordance 4510014  set %CONTEXT_Train_Evaluating_Intelligence 10255594  set %CONTEXT_Train_Fencing 2057938  set %CONTEXT_Train_Fishing 2129530  set %CONTEXT_Train_Focus 1736784  set %CONTEXT_Train_Forensic_Evaluation 9881992  set %CONTEXT_Train_Healing 2330106  set %CONTEXT_Train_Inscription 2652544  set %CONTEXT_Train_Item_Identification 10238832  set %CONTEXT_Train_Lockpicking 3681790  set %CONTEXT_Train_Lumberjacking 6315420  set %CONTEXT_Train_Mace_Fighting 5961428  set %CONTEXT_Train_Magery 2466304  set %CONTEXT_Train_Meditation 3901812  set %CONTEXT_Train_Mining 2019092  set %CONTEXT_Train_Musicianship 4167920  set %CONTEXT_Train_Necromancy 4205298  set %CONTEXT_Train_Parry 3108898  set %CONTEXT_Train_Peacemaking 4680400  set %CONTEXT_Train_Provocation 3850930  set %CONTEXT_Train_Resisting_Spells 6022522  set %CONTEXT_Train_Spirit_Speak 4945928  set %CONTEXT_Train_Swordsmanship 5601890  set %CONTEXT_Train_Tactics 1806400  set %CONTEXT_Train_Tailoring 2867278  set %CONTEXT_Train_Taste_Evaluation 6613220  set %CONTEXT_Train_Tinkering 2863750  set %CONTEXT_Train_Tracking 2572028  set %CONTEXT_Train_Veterinary 2777822  set %CONTEXT_Train_Wrestling 2967380return;-------------------------------------------------------------------------------; %1 = HandleContextMenu; %2 = #FINDID to manipulate; %3 = menu selection; returns #TRUE if entry not found, otherwise #FALSE for no error; stores computed values in !test1, !test2, !test3, etc for each menu selection.sub HandleContextMenu  namespace push  namespace local HCM  set !findid %2  set !menu_selection %3  set !x_offset 12  set !y_offset 12  set !select_height 18  set !y_gump_excess 24   exevent popup !findid  gosub GumpWait NULL normal_gump normal_gump  set #CONTPOSX 25  set #CONTPOSY 25  wait 10  str pos #CONTSIZE _  str del #CONTSIZE 1 #STRRES   set !gump_y #STRRES  set !number_of_selections ( ( !gump_y - !y_gump_excess ) / !select_height )  for !line_number 1 !number_of_selections  {    set !clickxposition1 #CONTPOSX + !x_offset    set !clickyposition1 #CONTPOSY + !y_offset + ( !select_height * ( !line_number - 1 ) )    set !clickxposition2 !clickxposition1 + 150    set !clickyposition2 !clickyposition1 + !select_height - 1    gosub NewSampleArea NULL !clickxposition1 !clickyposition1 !clickxposition2 !clickyposition2    set !test . !line_number #RESULT  ; stores values in !test1, !test2, .. !test . n.  Put in debug mode to gather these sampled values;    pause  ; include this pause to view sampled values.    if #RESULT = !menu_selection    {      click !clickxposition1 !clickyposition1 mc      namespace pop      return #FALSE ; no error, selection found    }  };  pause  namespace clear  namespace popreturn #TRUE;-------------------------------------------------------------------------------; %1 = NewSampleArea; %2 = x1coord; %3 = y1coord; %4 = x2coord; %5 = y2coord; %6 = return stampsub NewSampleArea  namespace push  namespace local NSA2  set !temp_LPC #LPC  set #LPC 10000  set !stamp 0  set !x %2  set !blank_cnt 0  while !x <= %4  {    set !y %3    while !y <= %5    {      savepix !x !y 1      if #PIXCOL = 16777215      {        set !stamp ( !stamp + ( !x - %2 + 1 ) * 2048 + ( !y - %3 + 1 ) * 128 )        set !blank_cnt 0      }      else      {        set !stamp ( !stamp + ( !x - %2 ) * ( !y - %3 ) )      }      set !y !y + 2    }    set !blank_cnt !blank_cnt + 1    if !blank_cnt >= 10      goto NewSampleArea_skip1    set !x !x + 5 ; changing this will impact present sampled values!!  }NewSampleArea_skip1:  set #LPC !temp_LPC  set #RESULT !stamp  namespace popreturn #RESULT;-------------------------------------------------------------------------------; %1 = GumpWait; %2 = Gumpname 1; %3 = Gumpname 2sub GumpWait  wait 10  set %timedelay #SCNT  GumpWait_loop1:    if #CONTNAME = %2 || #CONTNAME = %3      return    if #SCNT > %timedelay + 7      return    goto GumpWait_loop1return
This should work on both OSI and RunUO

Navigation

[0] Message Index

Go to full version