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