sure this is the script I have changed it is not my script and I don't say it is my script it is just what I have updated to get it to work. I was doing it for mace and shields so if it doesn't work for you let me know
;===========================================================================
; Script Name: Gen's Library Donations
; Author: Gen2000
; Version: 1.5
; Client Tested with: 7.0.1.1
; EUO version tested with: 1.5 155
; Shard OSI/FS: OSI
; Public Release: 11/1/09
; Revision Date:
; Global Variables Used: CEO*FILESYSTEM
; Purpose: Recalls to smith/mage shops, buys axes/spell books,
; Recalls to library & donates for glasses
;
; Glasses: Mace & Sheild, Wizard's Crystal , Fold & Steel
;===========================================================================
; http://www.scriptuo.com
;===========================================================================
; Special Thanks:
;---------------------------------------------------------------------------
; Author: snicker7
; Script Name: sub s7UseRunebook
;---------------------------------------------------------------------------
; Author: Quintok / Raziel
; Script Name: sub waitForSysVars
;---------------------------------------------------------------------------
; Author CEO
; Script Name: Sub CEO*FILESYSTEM
;===========================================================================
; Items Needed:
; Backpack: 2 Rune Books, 1 bank/library runes, and 1 with vendor shops.
;===========================================================================
; Instructions: Bank/Library runebook should have rune to bank and library.
; Vendor runebook should have runes marked to vendor shops.
; Start off at any bank, click play and follow menu.
;===========================================================================
; Tips: *DO NOT START WITH MORE THAN 3K GOLD IN PACK.
; *REMOVE ALL BATTLE AXES YOU MAY WANT TO KEEP FROM PACK.
; *REMOVE ALL SPELLBOOKS (SLAYERS ECT.) FROM PACK IF DONATING TO MAGE.
; AND THE SPELLBOOK YOUR USING IN HAND!
;===========================================================================
set %lpc 1000 ;Adjust lpc if buying menu is going too fast.
set %axe_amount 95 ;Amount of axes to buy at a time.
set %spellbook_amount 100 ;Amount of spellbooks to buy at a time.
set %No_Dachi_amount 40 ;Amount of No-Dashis to buy at a time.
set %NPC_axe Garner ;Name of NPC to Donate Axes.
set %NPC_spellbook William ;Name of NPC to Donate Spellbooks
set %NPC_No_Dachi Pamela ;Name of NPC to Donate No Dachis
;===========================================================================
;Option below is used to setup points you already have or reset points.
;Set %reset to #true, set %donated to points you have divided by 9/10 axe/spellbook.
;===========================================================================
set %reset #false ;set true to reset count
if %reset
{
set %donated 2046 ;Number of points divided by points per item(s).
gosub putGlobalVar Gen LD #CHARID DONATED
display set reset back to false and restart script
halt
}
;===========================================================================
;----------------------------------Setup------------------------------------
;===========================================================================
set %start #true
set %vendortype IS_HS
set #menubutton closed
set %vendor 1
set %pause pause
set %pause_resume Pause
set %d_lpc #lpc
set %status Please , #spc , Wait...
gosub openpack
gosub openstatusbar
gosub getGlobalVar GEN LD #CHARID first
if ! #result
{
set %first 1
gosub putGlobalVar GEN LD #CHARID first
set %donated 0
set %points 0
gosub showeuomenu1
set %status Ready...
gosub menu_refresh2
goto setup
}
gosub first_setup
if %SETUP = NO
{
gosub GetGlobalVars
goto setup3
}
menu hideeuo
gosub showeuomenu1
set %status Ready...
gosub menu_refresh2
setup:
if #menubutton = runebook
goto runebook
if #menubutton = runebook2
goto runebook2
if #menubutton = start
goto setup2
goto setup
setup2:
menu get travel
if #MENURES = 1
set %travel r
if #MENURES = 2
set %travel c
menu get Donation
if #MENURES = 1
set %donationtype warrior
if #MENURES = 2
set %donationtype mage
if #MENURES = 3
set %donationtype warrior2
menu get library
set %library #MENURES
menu get bank
set %bank #MENURES
menu get vendors
set %vendors #MENURES
setup3:
gosub donationtype
gosub showeuomenu2
menu hide
menu hideeuo
set #menubutton closed
gosub SetGlobalVars
goto mainloop
;======================================
;---------------Main Loop--------------
;======================================
mainloop:
finditem %items c_ , #BACKPACKID
if #FINDCNT > 0
{
set %start #false
goto mainloop3
}
gosub recall2bank
mainloop2:
gosub recall2vendor
goto findvendor
mainloop3:
gosub recall2library
gosub donate
goto mainloop
;=======================================
;--------------Buy----------------------
;=======================================
findvendor:
set %status Finding , #spc , vendor..
gosub menu_refresh
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
finditem %vendortype G_25
if #findkind = -1
{
if %donationtype = warrior || %donationtype = mage
{
set %vendor %vendor + 1
if %vendor > %vendors
{
set %vendor 1
ignoreitem reset 2
}
if #gold = %did_I_buy
goto mainloop2
goto mainloop3
}
if %donationtype = Warrior2
{
set %wait_count 0
repeat
set %wait_count %wait_count + 1
wait 20
set %status Waiting , #spc , %wait_count , #spc , Secs
gosub menu_refresh
until %wait_count > 60
ignoreitem reset 2
goto findvendor
}
}
if #FINDREP <> 7
{
ignoreitem #findid 3
goto findvendor
}
set %vendorid #findid
event Property #findID
if %vendorname notin #property || quest in #property || banker in #property || minter in #property
{
ignoreitem #findid 3
goto findvendor
}
;-------------------------------------
if #finddist > 7
{
set %jindex #jIndex
set %wait #SCNT + 2
event pathfind #FINDX #FINDY #FINDZ
repeat
scanjournal %jindex
if get_there in #journal
{
ignoreitem #findid 3
goto findvendor
}
set %jindex %jindex + 1
if N/A in #journal
set %jindex %jindex - 1
until pathfinding in #journal || %wait < #SCNT
wait 2s
}
;-----------------------------------------
exevent popup %vendorid
wait 20
click 20 40
gosub WaitForSysVars CONTNAME = bill_gump CONTSIZE = 283_248 5
if ! #result
{
if #CONTSIZE = 507_436 ;Quest menu
{
set %x2 #CONTPOSX + 350
set %y2 #CONTPOSY + 400
click %x2 %y2
wait 30
click %x2 %y2
wait 10
ignoreitem #findid 3
set %trys 0
}
if #CONTSIZE = 463_414 ;Quest menu 2
{
set %x1 #CONTPOSX + 245
set %y1 #CONTPOSY + 344
click %x1 %y1
wait 10
ignoreitem #findid 3
set %trys 0
}
set %trys %trys + 1
if %trys > 2
{
ignoreitem #findid 3
set %trys 0
}
goto findvendor
}
set %x_buy #CONTPOSX - 118
set %y_buy #CONTPOSY - 135
set %x_next #CONTPOSX + 73
set %y_next #CONTPOSY - 11
set %x_sign #CONTPOSX + 43
set %y_sign #CONTPOSY + 205
itemtobuy:
set #lpc %lpc
set %status Shopping..
gosub menu_refresh
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
getshopinfo
if #SHOPITEMTYPE in %ITEMS
{
goto buy
}
click %x_next %y_next ;next
if #SHOPCURPOS = #SHOPCNT
{
set #lpc %d_lpc
click %x_sign %y_sign ;sign
CONTNAME <> bill_gump CONTSIZE <> 283_248 5
ignoreitem %vendorid 2
goto findvendor
}
goto itemtobuy
buy:
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
if #SHOPITEMPRICE > %MAX_PRICE
{
click %x_next %y_next
goto skip
}
click %x_buy %y_buy d ;buy
click %x_buy %y_buy d ;buy
getShopInfo
set %amount %number
if #SHOPITEMMAX < %number
set %amount #SHOPITEMMAX
setShopItem #shopItemID %amount
set #lpc %d_lpc
click %x_sign %y_sign ;sign
gosub WaitForSysVars CONTNAME <> bill_gump CONTSIZE <> 283_248 5
;ignoreitem reset 2
goto mainloop3
skip:
if #SHOPCURPOS = #SHOPCNT
{
set #lpc %d_lpc
click %x_sign %y_sign ;sign
gosub WaitForSysVars CONTNAME <> bill_gump CONTSIZE <> 283_248 5
ignoreitem %vendorid 2
if #gold = %did_I_buy
goto findvendor
goto mainloop3
}
goto itemtobuy
;=======================================
;--------------Subs---------------------
;=======================================
sub donationtype
if %donationtype = warrior
{
set %MAX_PRICE 23
set %number %axe_amount
set %donate %NPC_axe
set %items BSF_HSF
set %points_per 9
set %vendorname smith
return
}
if %donationtype = mage
{
set %MAX_PRICE 18
set %number %spellbook_amount
set %donate %NPC_spellbook
set %items MPF
set %points_per 10
set %vendorname mage
return
}
if %donationtype = warrior2
{
set %MAX_PRICE 73
set %number %No_Dachi_amount
set %donate %NPC_No_Dachi
set %items EDP
set %points_per 27
set %vendorname smith
return
}
display Error in setup!
halt
sub first_setup
gosub showeuomenu3
first_setup:
if #MENUBUTTON = yes
{
set #MENUBUTTON closed
set %SETUP yes
return
}
if #MENUBUTTON = no
{
set #MENUBUTTON closed
set %SETUP no
return
}
goto first_setup
sub recall2bank
if %start
{
set %start #false
set %gold %number * %MAX_PRICE
set %gold %gold - #GOLD
if %gold < 1
return
event macro 3 0 withdraw %gold
return
}
bank:
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
set %status Recalling , #spc , to , #spc , bank
gosub menu_refresh
set %start #CHARPOSX
gosub s7UseRunebook %runebook %bank %travel
set %recall_timer #SCNT + 10
wait_bank:
if %recall_timer < #SCNT
{
goto bank
}
if %start = #CHARPOSX
goto wait_bank
set %start #false
;set %number ( #MAXWEIGHT - #WEIGHT ) / 4
set %gold %number * %MAX_PRICE
set %gold %gold - #GOLD
if %gold < 1
return
event macro 3 0 withdraw %gold
return
sub recall2vendor
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
set %status Recalling , #spc , to , #spc , vendor , #spc , %vendor
gosub menu_refresh
set %start #CHARPOSX
gosub s7UseRunebook %runebook2 %vendor %travel
set %recall_timer #SCNT + 10
wait_vendor:
if %recall_timer < #SCNT
{
if err in #result
set %vendor %vendor + 1
goto mainloop2
}
if %start = #CHARPOSX
goto wait_vendor
set %did_I_buy #gold
wait 20
return
sub recall2library
library:
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
set %status Recalling , #spc , to , #spc , library
gosub menu_refresh
set %start #CHARPOSX
gosub s7UseRunebook %runebook %library %travel
set %recall_timer #SCNT + 10
wait_library:
if %recall_timer < #SCNT
{
goto library
}
if %start = #CHARPOSX
goto wait_library
return
sub donate
set %status Donating...
gosub menu_refresh
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
donate:
finditem IS_HS g_4
if #findkind = -1
{
display Not close enough to %Donate - Fix it - Script Paused
gosub pause
goto donate
}
if #findrep <> 7
{
ignoreitem #findid player
goto donate
}
event property #findid
if #property = $
goto donate
if %donate notin #property
{
ignoreitem #findid npc
goto donate
}
set #lobjectid #findid
finditem %items c_ , #BACKPACKID
if #findkind = -1
{
click %x %y r
return
}
set #ltargetid #findid
set #ltargetkind 1
event macro 17 0
set #ltargetid #findid
set #ltargetkind 1
donate2:
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
gosub waitforsysvars CONTNAME = generic_gump CONTSIZE = 345_359 2
if ! #result
goto donate
if #result
{
finditem %items c_ , #BACKPACKID
if #findkind = -1
{
click %x %y r
return
}
set #ltargetid #findid
set #ltargetkind 1
if %donationtype = Warrior || %donationtype = mage
{
set %x #CONTPOSX + 39
set %y #CONTPOSY + 300
click %x %y
target 2s
event macro 22 0
}
if %donationtype = Warrior2
{
set %x #CONTPOSX + 306
set %y #CONTPOSY + 343
click %x %y
click %x %y
set %x #CONTPOSX + 39
set %y #CONTPOSY + 266
click %x %y
target 2s
event macro 22 0
}
set %donated %donated + 1
set %points ( %donated * %points_per )
gosub putGlobalVar Gen LD #CHARID DONATED
gosub menu_refresh
goto donate2
}
goto donate
runebook:
set %status Target , #spc , your , #spc , #spc , Bank/Library , #spc , Runebook
gosub menu_refresh2
set #targcurs 1
repeat
until #targcurs = 0
set %runebook #ltargetid
set %status Ready...
gosub menu_refresh2
set #menubutton closed
goto setup
runebook2:
set %status Target , #spc , your , #spc , #spc , Vendor(s) , #spc , Runebook
gosub menu_refresh2
set #targcurs 1
repeat
until #targcurs = 0
set %runebook2 #ltargetid
set %status Ready...
gosub menu_refresh2
set #menubutton closed
goto setup
sub openstatusbar
openstatusbar:
event macro 8 2
gosub WaitForSysVars CONTSIZE = 584_216 CONTNAME = status_gump
if ! #result
{
goto openstatusbar
}
movestatus:
set #CONTPOSX 800
set #CONTPOSY 420
gosub WaitForSysVars CONTPOSX = 800 CONTPOSY = 420 5
if ! #result
{
goto movestatus
}
wait 20
return
sub openpack
openpack:
event macro 8 7
gosub WaitForSysVars CONTSIZE = 230_204 CONTNAME = container_gump
if ! #result
{
goto openpack
}
movepack:
set #CONTPOSX 815
set #CONTPOSY 255
gosub WaitForSysVars CONTPOSX = 815 CONTPOSY = 255 5
if ! #result
{
goto movepack
}
wait 20
return
sub pause
set %pause resume
set %pause_resume Resume
set %status Paused..
menu Font Color Aqua
menu Button %pause 160 20 75 25 %pause_resume
menu set %pause %pause_resume
gosub menu_refresh
pause:
if #menubutton = resume
{
set %pause pause
set %pause_resume pause
menu Font Color Aqua
menu Button %pause 160 20 75 25 %pause_resume
menu set %pause %pause_resume
gosub menu_refresh
return
}
goto pause
;===================================================
; Script Name: sub s7UseRunebook
; Author: snicker7
; Version: 2.0
; Client Tested with: 4.0.11c
; EUO version tested with: 1.42/1.5
; Shard OSI / FS: OSI/FS
; Revision Date: 24Aug05
; Public Release: 24Aug05
; Global Variables Used: N/A
; Purpose: Failsafe sub to recall, gate, sacred journey flawlessly. Options to use scrolls, default locations, recharge books with scrolls in pack if book runs out of charges, and perfect gate travel. Not for the feint of heart!
;===================================================
;======= This file includes the main sub and =======
;===== several support subs that are required. =====
;===================================================
;===== Much love for T-Mo and BM, but I needed =====
;====== to write something I could only blame ======
;======= myself for if it fails. even though =======
;=================== it doesn't. ===================
;===================================================
; ===================================================================== ;
; ///////////////////////////////////////////////////////////////////// ;
; // EXCERPTS FROM S7SUBS.EUO ///////////////////////////////////////// ;
; ///////////////////////////////////////////////////////////////////// ;
; // Any reproduction of the subroutines below is strictly pro- /////// ;
; // hibited without express written permission of the author ///////// ;
; // (snicker7). Violation of the above will result in malicious ////// ;
; // actions by the aforementioned author performed upon your person // ;
; // including but not limited to: bodily harm, slander, maternal ///// ;
; // insults, possible legal action, and callin' the five-oh. Thank /// ;
; // you. ///////////////////////////////////////////////////////////// ;
; ///////////////////////////////////////////////////////////////////// ;
; ===================================================================== ;
;=/ 1NCLUD3D SUBS: /================================
; s7UseRunebook: Duh, you know why it's there.
; s7ScanJournalFor: SuperMultiParameterJournalScanning Power!
; s7MoveToPos: Legendary snicker7 brand name drag and drop sub. updated!
; s7MoveToCont: Wrapper for the above sub, updated for 1.5 exevents!
; s7WaitForAction: Mildly obsolete, begging for a rewrite object-delay sub!
; s7WaitForVars: Classic sysvar wait sub. One line shorter than Quintok's!
;===================================================
;----
;* @name s7UseRunebook
;* @author snicker7
;* @ver 2.0a 24Aug05
;* @purpose do anything and everything travel related with a runebook
;* @params %1 Rune or Runebook item ID to use
;* %2 number of rune to travel to, use "default" for runes or default in runebook
;* %3 travel method:
;* r: recall
;* g: gate
;* c: sacred journey
;* s: scrolls
;* @dependencies
;* s7WaitForVars
;* s7WaitForAction
;* s7ScanJournalFor
;* s7MoveToCont for recharging runebooks
;* @returns #true on success
;* ERR_* various errors.
;* @notes none
;* @example: gosub s7UseRunebook %bookID 14 r
;* @status done
sub s7UseRunebook
if %0 < 3 || _ , %2 , _ notin _1_2_3_4_5_6_7_8_9_10_11_12_13_14_15_16_default_
return ERR_IncorrectParams
namespace push
namespace local _s7URB
set !runebook %1
set !index %2
set !method %3
set !fails 0
if #contsize = 452_236
{
set !_cx #contposx + 20
set !_cy #contposy + 20
click !_cx !_cy r f dmc
wait 5
}
for !_ 1 1
{
finditem OTF_JEF_KEF G_0
if #findkind <> -1
set !_ 0
}
for !orb 1 1
{
if !fails > 0 2
namespace pop
return ERR_ , #journal
set !jStart #jindex + 1
if !index <> default
{
gosub s7WaitForAction 12
set #lobjectid !runebook
event macro 17 0
gosub s7WaitForVars contname = generic_gump contsize = 452_236 3
if ! #result 2
set !fails !fails + 1
set !orb 0
if #result
{
set !_cy #contposy + 196
set !_cx #contposx + 105 + ( ( ( !index / 2 ) + ( !index % 2 ) ) * 35 )
if !index > 8
set !_cx !_cx + 30
click !_cx !_cy f dmc
wait 5
set !_cx #contposx + 135
set !_cy #contposy + 144
if !method = G
set !_cy !_cy + 20
if !method = C
set !_cy !_cy + 36
if !method = S
set !_cy !_cy - 76
if ( !index % 2 ) = 0
set !_cx !_cx + 160
set !charpos #charposx , _ , #charposy
set !timeout #scnt2
click !_cx !_cy f dmc
}
}
if !index = default
{
set #ltargetid !runebook
set #ltargetkind 1
if !method = c
event macro 15 210
if !method = r
event macro 15 31
if !method = g
event macro 15 51
if !method = s
{
finditem WTL C_ , #backpackid
if #findkind = -1 2
namespace pop
return ERR_NoRecallScrolls
if #findkind <> -1 3
set #lobjectid #findid
gosub s7WaitForAction 12
event macro 17 0
}
for !_ 1 1
{
if #targcurs <> 1
set !_ 0
gosub s7ScanJournalFor !jStart fizzles more_reagents tithing_points insufficient_mana
if #result 3
set !_ 1
set !orb 0
wait 20
}
set !charpos #charposx , _ , #charposy
set !timeout #scnt2
event macro 22 0
}
if !orb = 1
{
for !success 1 1
{
if #charposx , _ , #charposy = !charpos && !method in _r_c_s_
set !success 0
if !method = g
{
finditem OTF_JEF_KEF G_0
if #findkind = -1
set !success 0
if #findkind <> -1
{
set #lobjectid #findid
gosub s7WaitForAction 12
event macro 17 0
for !_ 1 1
{
if #charposx , _ , #charposy = !charpos
set !_ 0
if #contname = generic_gump && #contsize = 420_280
{
set !_cx #contposx + 20
set !_cy #contposy + 260
click !_cx !_cy f dmc
}
}
}
}
gosub s7ScanJournalFor !jStart fizzles location_is_blocked not_yet_recovered no_charges_left more_reagents tithing_points insufficient_mana not_marked
if #result || !timeout + 60 < #scnt2
{
if no_charges in #journal
{
finditem WTL C_ , #backpackid
if #findkind = -1
set !fails 2
if #findkind <> -1
{
set !scrolls #findid
finditem !runebook
set #findmod 0
gosub s7WaitForAction 12
event drag !runebook
for !_ 1 1
{
if #lliftedkind <> 1 2
wait 1
set !_ 0
}
str pos #contsize _
set #strres #strres - 1
str left #contsize #strres
set !_cx #findx + #strres / 2
str pos #contsize _
str del #contsize 1 #strres
set !_cy #findy + #strres / 2
click !_cx !_cy p f dmc
gosub s7MoveToCont !scrolls !runebook #backpackid 20_10
}
}
set !fails !fails + 1
set !success 1
set !orb 0
}
}
wait 20
}
}
namespace pop
return #true
sub s7ScanJournalFor
set !SJFje #jindex + 1
for !SJFji %1 !SJFje
{
scanjournal !SJFji
for !SJFpi 2 %0
{
if % . !SJFpi in #journal
return #true
}
}
return #false
;----
;* @name s7MoveToPos
;* @author snicker7
;* @ver 1.2 24Aug05
;* @purpose Just Another Item Dragger.
;* @params %1 is the item to be dragged
;* %2 is the x-coord to drop to
;* %3 is the y-coord to drop to
;* %4 is the timeout in seconds
;* %5 is the amount to be dragged (blank for all)
;* @returns #true if drop was successful
;* #false on error (drop to backpack, insufficient params, failed to drag)
;* halt on critical error
;* @notes moves any item to a position on the screen. Will
;* attempt to drop on character if drop fails. If character
;* drop fails, halts and error message to avoid crash.
;* @dependencies
;* s7WaitForAction
;* @example: call s7Subs.euo s7MoveToPos #findid 7 9 4 77
;* @status unknown
sub s7MoveToPos
if %0 < 4
return #false
namespace Push
namespace Local _s7MvToPos
set !_ID %1
set !_x %2
set !_y %3
set !_tO %4
set !_Amt #spc
if %0 > 4
set !_Amt %5
set !_retry 0
_s7MvToPos_SD:
finditem !_ID
if #findkind = -1 2
namespace pop
return #false
gosub s7WaitForAction 13
event drag #findid
if #findstack > 1
{
set !_timeOut #scnt
for !_ 1 1
{
if #contname <> stack_gump && #contname <> drag_gump
{
wait 1
if !_timeOut + !_tO < #scnt
{
set !_retry !_retry + 1
if !_retry > 2 2
namespace pop
return #false
goto _s7MvToPos_SD
}
set !_ 0
}
}
if !_Amt > #findstack
set !_Amt #findstack
msg !_Amt , $
}
set !_retry 0
set !_timeOut #scnt
for !_ 1 1
{
if #lliftedkind <> 1
{
wait 1
if !_timeOut + !_tO < #scnt
{
set !_retry !_retry + 1
if !_retry > 2 2
namespace pop
return #false
goto _s7MvToPos_SD
}
set !_ 0
}
}
set !_retry 0
click !_x !_y p
set !_timeout #scnt
for !_ 1 1
{
if #lliftedkind = 1
{
wait 1
if !_timeout + !_t0 < #scnt
{
set !_retry !_retry + 1
if !_retry = 1
{
set !_x #clixres / 2
set !_y ( #cliyres / 2 ) - 30
click !_x !_y p
set #result #false
set !_timeout #scnt
}
if !_retry = 2 2
display ok You have failed to drop an item to the correct position.$$The script is now halting to prevent a crash.
halt
}
set !_ 0
}
}
set #result #true
namespace pop
return #result
;----
;* @name s7MoveToCont
;* @author snicker7
;* @ver 1.2 24Aug05
;* @purpose A wrapper for the sub s7MoveToPos for moving to containers.
;* @params %1 is the item to be dragged
;* %2 is the container to drag to
;* %3 is the mother container in which %2 is contained
;* %4 is the #findmod value for the container
;* %5 is the amount to be dragged (blank for all)
;* @returns none
;* @notes this is mad basic. no error checking. That is up to you.
;* @dependencies s7MoveToPos
;* @example: call s7Subs.euo s7MoveToCont #findid #backpackid #charid 140_220
;* @status tested good
sub s7MoveToCont
namespace Push
namespace Local _s7MoveToCont
set !_ID %1
set !_DCont %2
set !_MCont %3
set !_FMod %4
if 1_5 in #euover
{
set !_Amt 65535
if %0 > 4
set !_Amt abs %5
finditem !_ID
if #findkind = -1 2
namespace pop
return #false
gosub s7WaitForAction 13
exevent drag #findid !_Amt
exevent dropc !_DCont
namespace pop
return #true
}
set !_Amt #spc
if %0 > 4
set !_Amt %5
set #result #true
set !_retry 0
for !_ 1 1
{
finditem !_DCont C_ , !_MCont
if #findkind = -1
{
set #lobjectid !_MCont
gosub s7WaitForAction 13
event macro 17 0
gosub s7WaitForVars contid = !_MCont 3
if ! #result
{
set !_retry !_retry + 1
if !_retry > 2 2
namespace pop
return #false
}
set !_ 0
}
}
set !_retry 0
set #findmod !_Fmod
for !_ 1 1
{
gosub s7MoveToPos !_ID #findx #findy 4 !_Amt
if ! #result
{
set !_retry !_retry + 1
if !_retry > 2 2
namespace pop
return #false
set !_ 0
}
}
namespace Pop
return #true
;----
;* @name s7WaitForAction
;* @author snicker7
;* @ver 1.1 31Jan05
;* @purpose waits 1.3 seconds before continuing, useful for waiting to perform
;* another action
;* @params none
;* @returns none
;* @notes probably not an original idea, but I need to use it frequently and it
;* was easier to write it myself than to try to look for it as written by
;* someone else
;* @example: call s7Subs.euo s7WaitForAction 13
;* @status tested good
sub s7WaitForAction
_s7WaitForAction:
if %_s7ActionTimer + %1 > #scnt2 2
wait 1
goto _s7WaitForAction
set %_s7ActionTimer #scnt2
return
;----
;* @name s7WaitForVars
;* @author snicker7, inspired by Quintok, and of course, Smertrios
;* @ver 1.2 24Aug05
;* @purpose Multiple input sysvar waiter.
;* @params %1*n is the gump sysvar being checked
;* %2*n is the comparative operator (>, <, <>, =, etc)
;* %3*n is the desired value of the sysvar
;* %nfinal is the timeout in seconds
;* @returns #false if it times out
;* #true if success
;* @notes %1 does not require the preceding number sign
;* one line shorter than Q's, no disrespect son
;* originally written by Smertrios, included in Lexia
;* Multiple inputs by Quintok, Obfuscation and name-
;* spacing by snicker7!
;* @example: call s7Subs.euo s7WaitForVars contID = #backpackID contSize = 7_9 3
;* @status tested good
sub s7WaitForVars
namespace Push
namespace Local _s7WFVs
set !C %0 / 3
set !T #scnt + 5
if ( %0 % 3 ) = 1
set !T #scnt + % . %0
for !i 1 !C
{
set !o 3 * !i - 2
set !p !o + 1
set !q !o + 2
if ! ( # . % . !o % . !p % . !q )
set !i 0
if #scnt > !T 2
namespace pop
return #false
}
namespace Pop
return #true
;======================================
;----------End of S7urb----------------
;======================================
;======================================
; Script Name: sub waitForSysVars
; Author: Quintok / Raziel
; Version: 1.05
; Client Tested with: 4.0.2b
; EUO version tested with: 0078
; Shard OSI / FS: OSI / FS
; Revision Date: 22th August 2005
; Public Release: 20th March 2004
; Global Variables Used: none
; Purpose: same as waitForSysVar but for multiple inputs.
;%1 system variable without '#'
;%2 = <> > < ... etc
;%3 comparing value
;%4 system variable without '#'
;%5 = <> > < ... etc
;%6 comparing value
;%n = timeout (not required)
;======================================
sub waitForSysVars
set !cnt %0 / 3
set !timeOut #scnt + 5
if ( %0 % 3 = 1 )
set !timeOut #scnt + % . %0
for !i 1 !cnt
{
set !offset 3 * !i - 2
set !evaluation !offset + 1
set !value !offset + 2
if ! ( # . % . !offset % . !evaluation % . !value )
set !i 0
if #scnt > !timeout
return #false
}
return #true
;=======================================
sub SetGlobalVars
gosub putGlobalVar GEN LD #CHARID BANK
gosub putGlobalVar Gen LD #CHARID LIBRARY
gosub putGlobalVar Gen LD #CHARID RUNEBOOK
gosub putGlobalVar Gen LD #CHARID RUNEBOOK2
gosub putGlobalVar Gen LD #CHARID TRAVEL
gosub putGlobalVar Gen LD #CHARID VENDORS
gosub putGlobalVar Gen LD #CHARID DONATIONTYPE
return
sub GetGlobalVars
gosub getGlobalVar Gen LD #CHARID BANK
gosub getGlobalVar Gen LD #CHARID DONATED
gosub getGlobalVar Gen LD #CHARID LIBRARY
gosub getGlobalVar Gen LD #CHARID RUNEBOOK
gosub getGlobalVar Gen LD #CHARID RUNEBOOK2
gosub getGlobalVar Gen LD #CHARID TRAVEL
gosub getGlobalVar Gen LD #CHARID VENDORS
gosub getGlobalVar Gen LD #CHARID DONATIONTYPE
return
;==================================
; Script Name: CEO*FileSystem (pseudo filesystem)
; Author: CEO
; Version: 1.1
; Client Tested with: 4.0.1b
; EUO version tested with: 1_41_103
; Shard OSI / FS: OSI
; Revision Date: 040219
; Public Release: 040219
; Globals Used: User specified (2 total)
; Purpose: Allows you to use a * variable as a pseudo-filesystem
;=======================================
; CEO's global variable management subs:
; getGlobalVar . putGlobalVar . delGlobalVar
;=======================================
;
;ver 1.1
;changed the lock file to use *variablename_lock so it'll work with any named *variable
;
Sub getGlobalVar
;ver 1.0 posted 19Feb04 by CEO
;purpose: Allows you to store multiple variables in one global variable unique to
; each player and script. getGlobaVar retrieves a value from a global variable.
;@returns: #result = #false if variable not found, #true if found
; % . %3 contains variable value
;%1 is the global/persistant variable to use ( %1 + 1 is used for locking)
;%2 is the script identifer or pseudo filename
;%3 is #charid or pseudo filename
;%4 is the variable to search for and return in %. %3
;%5 is for lock control. By default getGlobalVar uses a lock to return a value. In some cases you may want to
; retrieve a variable (mostly for speed) without needing a lock as long as you are aware of
; any potentional conflicts, that very rarely may occur. Set this param to NOLOCK to access
; global storage without a lock.
;sample usage:
; gosub getGlobalVar 50 MyScript #charid backpackid
; Using global var *50 finds the variable labeled MyScript#charidbackpackid and returns it in %backpackid
;
; gosub getGlobalVar 50 MyScript #charid clothstat NOLOCK
; Using global var *50 find the variable labeled MyScript#charidclothstat and returns it in %clothstat without using a lock
; Warning: do not use *1000. * %1 + 1 is used for locking and there is no *1001!
nameSpace push
nameSpace local #systime , _ , %2 , _ , %3 , _ , %4 , _ , GET
set !lpc #lpc
set #lpc 1000
set !lock %1 , _lock
if ( %0 = 5 ) && ( %5 = NOLOCK )
goto getGlobalVar_skiplock
set !lockcount 0
getGlobalVar_waitforlock:
if * . !lock <> N/A && * . !lock <> #nsname
{
wait 1 4
set !lockcount !lockcount + 1
if !lockcount < 10
goto getGlobalVar_waitforlock
if * . !lock <> N/A
{
set !currentlock * . !lock
if !currentlock = N/A
goto getGlobalVar_waitforlock
str pos !currentlock _
set !strres #strres - 1
str left !currentlock !strres
set !systime #systime - #strres
if !systime < 10000 ; if over 10 seconds assume a broken lock and take it
{
set !lockcount 0
goto getGlobalVar_waitforlock
}
}
}
set * . !lock #nsname
wait 3 2
if * . !lock <> #nsname
{
set !lockcount 0
goto getGlobalVar_waitforlock
}
getGlobalVar_skiplock:
set !global * . %1
set !varName %2 , ^ , %3 , ^ , %4 , |
str pos !global !varName
set #result #strres <> 0
if #result
{
set !varNamePos #strres
str len !varName
set !delString !varNamePos + #strres - 1
str del !global 1 !delString
set !global #strres
str pos !global |
set !varNamePos #strres - 1
str left !global !varNamePos
set % . %4 #strres
}
if ( %0 < 5 || %5 <> NOLOCK ) && * . !lock = #nsname
set * . !lock N/A
set #lpc !lpc
nameSpace Clear
nameSpace Pop
return #result
Sub putGlobalVar
;ver 1.0 posted 19Feb04 by CEO
;purpose: Allows you to store multiple variables in one global variable unique to
; each player and script. putGlobaVar stores a value into a global variable.
;@returns: #result = #false if variable not found, #true if found
; % . %3 contains variable
;%1 is the global/persistant variable to use
;%2 is the script identifer or pseudo filename
;%3 #charid or other identifier
;%4 is the variable name of the variable to save into the* variable identified in %1
;sample usage:
; gosub putGlovalVar 50 MyScript #chardid backpackid
; Using global var *50 stores/updates the variable labeled MyScript#charidbackpackid with %backpackid
; Warning: do not use *1000. * %1 + 1 is used for locking and there is no *1001!
nameSpace push
nameSpace local #systime , _ , %2 , _ , %3 , _ , %4 , _ , PUT
set !lpc #lpc
set #lpc 1000
set !lock %1 , _lock
set !lockcount 0
putGlobalVar_waitforlock:
if * . !lock <> N/A && * . !lock <> #nsname
{
wait 1 4
set !lockcount !lockcount + 1
if !lockcount < 10
goto putGlobalVar_waitforlock
if * . !lock <> N/A
{
set !currentlock * . !lock
if !currentlock = N/A
goto putGlobalVar_waitforlock
str pos !currentlock _
set !strres #strres - 1
str left !currentlock !strres
set !systime #systime - #strres
if !systime < 10000 ; if over 10 seconds assume a hung lock and take it
{
set !lockcount 0
goto putGlobalVar_waitforlock
}
}
}
set * . !lock #nsname
wait 4
set !global * . %1
set !varName %2 , ^ , %3 , ^ , %4 , |
str pos !global !varName
if #strres = 0
{
if * . !lock <> #nsname
{
set !lockcount 0
goto putGlobalVar_waitforlock
}
if |CEO*FILESYSTEM| notin !global
set !global |CEO*FILESYSTEM|
set * . %1 !global , !varName , % . %4 , |
set * . !lock N/A
set #lpc !lpc
nameSpace clear
nameSpace pop
return #true
}
set !varNamePos #strres
str len !varName
set !splitString !varNamePos + #strres - 1
str left !global !splitstring
set !globalPart1 #strres
str del !global 1 !splitString
set !global #strres
str len !global
set !globalLen #strres
str pos !global |
set !splitString !globalLen - #strres + 1
str right !global !splitstring
set !global #strres
if * . !lock <> #nsname
{
set !lockcount 0
goto putGlobalVar_waitforlock
}
set * . %1 !globalPart1 , % . %4 , !global
set * . !lock N/A
set #lpc !lpc
nameSpace clear
nameSpace pop
return #true
Sub delGlobalVar
;ver 1.0 posted 19Feb04 by CEO
;purpose: Allows you to delete a variable out of the globalvar pool unique to
; each player and script. delGlobaVar deletes a global variable in a * variable.
;@returns: #result = #false if variable not found, #true if deleted
;
;%1 is the global/persistant variable to use
;%2 is the script identifer or pseudo filename
;%3 is #charid or other identifier
;%4 is the variable name of the variable to save into the* variable identified in %1
;sample usage:
; gosub delGlovalVar 50 MyScript #charid backpackid
; Using global var *50 deletes the variable label MyScript#charidbackpackid and it's associated value.
; Warning: do not use *1000. * %1 + 1 is used for locking and there is no *1001!
nameSpace push
nameSpace local #systime , _ , %2 , _ , %3 , _ , %4 , _ , DEL
set !lpc #lpc
set #lpc 1000
set !lock %1 , _lock
set !lockcount 0
delGlobalVar_waitforlock:
if * . !lock <> N/A && * . !lock <> #nsname
{
wait 1 4
set !lockcount !lockcount + 1
if !lockcount < 10
goto delGlobalVar_waitforlock
if * . !lock <> N/A
{
set !currentlock * . !lock
if !currentlock = N/A
goto delGlobalVar_waitforlock
str pos !currentlock _
set !strres #strres - 1
str left !currentlock !strres
set !systime #systime - #strres
if !systime < 10000 ; if over 10 seconds assume a broken lock and take it
{
set !lockcount 0
goto delGlobalVar_waitforlock
}
}
}
set * . !lock #nsname
wait 4
set !global * . %1
set !varName %2 , ^ , %3 , ^ , %4 , |
str pos !global !varName
set #result #strres <> 0
if #result
{
set !varNamePos #strres
str len !varName
set !splitString !varNamePos + #strres - 1
set !delString !varNamePos - 1
str left !global !delString
set !globalPart1 #strres
str del !global 1 !splitString
set !global #strres
str pos !global |
set !delString #strres
str del !global 1 !delString
if * . !lock <> #nsname
{
set !lockcount 0
goto delGlobalVar_waitforlock
}
set * . %1 !globalPart1 , #strres
}
if * . !lock = #nsname
set * . !lock N/A
set #lpc !lpc
nameSpace clear
nameSpace pop
return #result
;=======================================
;----------------Menu-------------------
;=======================================
sub showEUOMenu1
menu Clear
menu Window Title Gen's Library Donations
menu Window Color BtnShadow
menu Window Size 361 442
menu Font Transparent #true
menu Font Align Right
menu Font Name MS Sans Serif
menu Font Size 8
menu Font Style
menu Font Color Aqua
menu Font Transparent #false
menu Font Align Left
menu Font BGColor BtnShadow
menu Text EUOLabel1 52 44 Library rune number
menu Text EUOLabel2 52 72 Bank rune number
menu Text EUOLabel3 92 128 Travel Method
menu Text EUOLabel4 8 212 Status:
menu Font Color Lime
menu Text EUOLabel5 44 212 %status
menu Font Color Aqua
menu Text EUOLabel6 52 100 Number of vendors in runebook
menu Text EUOLabel7 8 236 Instructions:
menu Text EUOLabel8 8 252 1. Start at any bank
menu Text EUOLabel9 8 268 2. setup runebooks.
menu Text EUOLabel10 8 284 3. Set Library/Bank rune numbers, # of vendor runes, and travel mothod.
menu Text EUOLabel11 8 316 5. Click start.
menu Text EUOLabel12 8 336 Tips:
menu Text EUOLabel13 8 352 * Don't start with more than 3k gold in pack.
menu Text EUOLabel14 8 368 * You can start with items already in pack.
menu Text EUOLabel15 8 300 4. Choose Donations Type
menu Text EUOLabel16 132 156 Donation Type
menu Text EUOLabel17 8 384 * Mark library runes within 3 tiles of npc.
menu Text EUOLabel18 8 400 * Make sure and remove all items you don't wish to donate!
menu Text EUOLabel19 16 416 Spellbooks, weapons, ect.
menu Button runebook 4 8 131 25 Bank/Library Runebook
menu Combo Create library 4 40 41
menu Combo Add library 1
menu Combo Add library 2
menu Combo Add library 3
menu Combo Add library 4
menu Combo Add library 5
menu Combo Add library 6
menu Combo Add library 7
menu Combo Add library 8
menu Combo Add library 9
menu Combo Add library 10
menu Combo Add library 11
menu Combo Add library 12
menu Combo Add library 13
menu Combo Add library 14
menu Combo Add library 15
menu Combo Add library 16
menu Combo Create bank 4 68 41
menu Combo Add bank 1
menu Combo Add bank 2
menu Combo Add bank 3
menu Combo Add bank 4
menu Combo Add bank 5
menu Combo Add bank 6
menu Combo Add bank 7
menu Combo Add bank 8
menu Combo Add bank 9
menu Combo Add bank 10
menu Combo Add bank 11
menu Combo Add bank 12
menu Combo Add bank 13
menu Combo Add bank 14
menu Combo Add bank 15
menu Combo Add bank 16
menu Button start 4 180 75 25 Start
menu Combo Create travel 4 124 81
menu Combo Add travel Magery
menu Combo Add travel Chiv
menu Combo Create vendors 4 96 41
menu Combo Add vendors 1
menu Combo Add vendors 2
menu Combo Add vendors 3
menu Combo Add vendors 4
menu Combo Add vendors 5
menu Combo Add vendors 6
menu Combo Add vendors 7
menu Combo Add vendors 8
menu Combo Add vendors 9
menu Combo Add vendors 10
menu Combo Add vendors 11
menu Combo Add vendors 12
menu Combo Add vendors 13
menu Combo Add vendors 14
menu Combo Add vendors 15
menu Combo Add vendors 16
menu Button runebook2 148 8 115 25 Vendor(s) Runebook
menu Combo Create Donation 4 152 121
menu Combo Add Donation Mace and Sheild
menu Combo Add Donation Wizard's Crystal
menu Combo Add Donation Fold & Steel
menu Show 10 50
return
sub showEUOMenu2
menu Clear
menu Window Title Gen's Library Donations
menu Window Color BtnShadow
menu Window Size 256 72
menu Font Transparent #true
menu Font Align Right
menu Font Name MS Sans Serif
menu Font Size 8
menu Font Style
menu Font Color Aqua
menu Font Transparent #false
menu Font Align Left
menu Font BGColor BtnShadow
menu Text EUOLabel1 14 4 Status:
menu Text EUOLabel3 4 24 Donated:
menu Text EUOLabel5 16 44 Points:
menu Button %pause 160 20 75 25 %pause_resume
menu Show 250 495
return
sub showEUOMenu3
menu Clear
menu Window Transparent 80
menu Window Title Gen's Library Donations
menu Window Color BtnShadow
menu Window Size 190 75
menu Font Transparent #true
menu Font Align Right
menu Font Name MS Sans Serif
menu Font Size 10
menu Font Style
menu Font Color Aqua
menu Font Transparent #false
menu Font Align Left
menu Font BGColor BtnShadow
menu Text EUOLabel1 16 8 Do you wish to run setup?
menu Font Size 8
menu Button yes 8 44 75 25 YES
menu Button no 96 44 75 25 NO
menu Show 350 300
return
sub menu_refresh
menu delete status
menu delete donated
menu delete points
menu Font Color lime
menu Text status 52 4 %status
menu Text donated 52 24 %donated
menu Text points 52 44 %points
return
sub menu_refresh2
menu delete euolabel5
menu Font Color lime
menu Text EUOLabel5 44 212 %status
return