Группа: Пользователи Наличность: 0
Пользователь №: 11.462
Возраст: 19
|
;===========================================================================
;-------------------------Item Type Reference-------------------------------
;===========================================================================
;KUF;Black Pearl
;JUF;Blood moss
;KZF;Garlic
;JZF;Gensing
;MZF;Mandrake Root
;WZF;Nightshade
;RZF;Spider Silk
;SZF;Sulfurous Ash
;IUF;Batwings
;YZF;Pig Iron
;TZF;Grave Dust
;DUF;Daemon Blood
;UZF;Nox Crystals
;WUF;бутылки пустые!
;TLK - доски
;JJG - кожа
;DEG не порезаная
;===========================================================================
;===========================================================================
; Script Name: Auto Item Buyer
; Global Variables Used: CEO*FILESYSTEM (GEN AIB)
; Purpose: Recalls to vendor shops, buys items, and recalls back
; to bank, unloads, gets more gold, and goes to next shop
;===========================================================================
; 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 with 2 bank runes, and 1 with vendor shops.
; Bank: 2 Bags, 1 for Gold, and 1 for items.
; Beetle(bonded or not)
;===========================================================================
; THIS SCRIPT WILL ONLY WORK WITH A BEETLE, SO GET ON YOUR BEETLE!
;===========================================================================
; Instructions: Start off at any bank, click play and follow menu.
;===========================================================================
; Tips & Fetures
;===========================================================================
; On your first setup, or any time you need to change runebooks,
; or boxes in bank, set those before rune numbers, travel method,
; or items to buy.
; Pick your travel method (only required on first time setup)
; Pick the items you wish to buy and click play
;
; Misc. Items(s)
; If you wish to use Misc items, you can't use the top 3 choices..
; (All Magery Regs, All Necrdo Regs, or Blank Scrolls). Check Misc Items,
; and put as many items types as you wish in the box below and click start.
; you must separate each item type with _ . So 3 items type would look like
; this XXX_XXX_XXX
; To get the itemtype of an item. First drag & drop the item. Now open easyuo
; and look under Last Action, and then #LLIFTEDTYPE. and that value will be
; the itemtype of the last itme you picked up. There is a list of itemtypes above.
;
; CEOFilesystem, When you run this script with each new charactor,
; it will go straight to setup for the first time, after that it will
; ask if you need to run setup. After you run setup for the first time, you never
; have to run setup again, unless you want to change the items you are buying
; or runesbooks, boxes, ect. You don't have to setup boxes, runebooks, or
; travel method again if you run setup. Just pick items you wish to buy and
; hit start. Setup is saved for each character.
;===========================================================================
;--------------------------------Delay Adjustments--------------------------
;===========================================================================
set %slowconn #TRUE;If you have a slow connection or computer set to #TRUE
;---------------------------------------------------------------------------
; If you are having problems with client crashing when dragging an item
; raise the %ex_delay 10 at a time until you don't.
set %ex_delay 20;exevent drag and drop delay
;---------------------------------------------------------------------------
; If you are having beetle problems, raise the %beetle_delay 10
; at a time until you don't
set %beetle_delay 30;setup beetle, mount/dismount beetle
;---------------------------------------------------------------------------
; If you need to adjust the respawn timer, put in how many mins you want to wait,
; default is 20 mins from the time you recall to vendor #1
set %respawntime 60;how many mins to wait for respawn
;===========================================================================
;-------------------------Item Type Reference-------------------------------
;===========================================================================
;KUF;Black Pearl
;JUF;Blood moss
;KZF;Garlic
;JZF;Gensing
;MZF;Mandrake Root
;WZF;Nightshade
;RZF;Spider Silk
;SZF;Sulfurous Ash
;IUF;Batwings
;YZF;Pig Iron
;TZF;Grave Dust
;DUF;Daemon Blood
;UZF;Nox Crystals
;DPF_MMF;Blanck Scrolls
;WUF;бутылки пустые!
;TLK - доски
;JJG - кожа
;DEG не порезаная
;===========================================================================
;---------------------DO NOT MODIFY SCRIPT BELOW THIS LINE------------------
;===========================================================================
;-------------------------------Initiation Process -------------------------
;===========================================================================
set *stop #false
set %respawntime %respawntime * 60
set %trys 0
set #MENUBUTTON closed
set %d_lpc #lpc
set %lpc 1000 ; ajust lpc if buying menu is going too fast.
if %slowconn
set %lpc 20
set %mageregs no
set %necroregs no
set %ALLITEMS KUF_JUF_KZF_JZF_MZF_WZF_RZF_SZF_IUF_YZF_TZF_DUF_UZF_DPF_MMF_WUF_TLK_JJG_DEG
gosub putGlobalVar Gen AIB #CHARID allitems
set %pause Pause
set %pause_resume Pause
set %BR1_text Bank , #spc , rune , #spc , number1
set %BR2_text Bank , #spc , rune , #spc , number2
set %VR_text Number , #spc , of , #spc , vendor , #spc , runes
set %bankrunebook_text Bank , #spc , Runebook
set %vendorrunebook_text Vendor , #spc , Runebook
set %goldbox_text Gold , #spc , Box
set %itembox_text Item , #spc , Box
set %vendor_type_text Vendor , #spc , Type(s)
set %item_type_text Item , #spc , Type(s)
menu hideeuo
set %status Please , #spc , Wait...
gosub showeuomenu4
gosub getglobalvars
set %beetle #false
gosub openpaperdoll
gosub openpack
gosub openstatusbar
set #lobjectid #CHARID
event macro 17 0
wait %beetle_delay
beetle:
finditem ZGB g_1
if #findkind = -1
{
set %status Get , #spc , A , #spc , Beetle
gosub showeuomenu4
wait 1s
goto beetle
}
set %BEETLEID #findid
set #lobjectid %BEETLEID
event macro 17 0
wait %beetle_delay
gosub openbank
set %status Ready....
gosub getGlobalVar GEN AIB #CHARID first
if ! #result
{
set %first 1
gosub showeuomenu1
goto setup
}
gosub first_setup
if %SETUP = NO
goto start
gosub showeuomenu1
setup:
if #menubutton = bank
goto bank
if #menubutton = vendor
goto vendor
if #menubutton = gold
goto gold
if #menubutton = items
goto items
gosub itemsetup
if #menubutton = start
{
gosub travel_runes
menu get maxprice
if #MENURES
{
menu get max_price
set %MAX_PRICE #MENURES
}
set %status Processing...
gosub showeuomenu1
wait 2s
menu hide
gosub showeuomenu2
menu hide
menu hideeuo
set #menubutton closed
gosub SetGlobalVars
goto start
}
goto setup
bank:
set %status Tagert , #spc , Bank , #spc , runebook
gosub showeuomenu1
set #targcurs 1
repeat
until #targcurs = 0
set %BANKRUNEBOOK #ltargetid
set #menubutton Closed
set %status Ready....
set %bankrunebook_text Done
gosub showeuomenu1
goto setup
vendor:
set %status Taget , #spc , Vendor , #spc , Runebook
gosub showeuomenu1
set #targcurs 1
repeat
until #targcurs = 0
set %MAGESHOPS #ltargetid
set #menubutton Closed
set %status Ready....
set %vendorrunebook_text Done
gosub showeuomenu1
goto setup
gold:
set %status Tagert , #spc , Gold , #spc , Box
gosub showeuomenu1
set #targcurs 1
repeat
until #targcurs = 0
set %GOLDBOX #ltargetid
set #menubutton Closed
set %status Ready....
set %goldbox_text Done
gosub showeuomenu1
goto setup
items:
set %status Tagert , #spc , Item(s) , #spc , Box
gosub showeuomenu1
set #targcurs 1
repeat
until #targcurs = 0
set %ITEMBOX #ltargetid
set #menubutton Closed
set %status Ready....
set %itembox_text Done
gosub showeuomenu1
goto setup
start:
menu hide
gosub showeuomenu2
menu delete status
menu Font Color Aqua
menu Text status 48 8 %status
menu hideeuo
gosub GetGlobalVars
set #menubutton closed
set %respawn_time #SCNT + %respawntime
set %location 0
set %gold POF
set %vendortype IS_HS
ignoreitem #charid 1
set %goldwithdraw 5000$
set %did_I_buy 10000; must match above number minus "$"
goto atbank
mainloop:
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
set %start #CHARPOSX ;location before you recall
set %status Recalling , #spc , to , #spc , bank..
menu delete status
menu Font Color Aqua
menu Text status 48 8 %status
set %BR_R_N #random % 2
set %BR_R %BR1
if %BR_R_N = 1
set %BR_R %BR2
gosub s7UseRunebook %BANKRUNEBOOK %BR_R %TRAVEL
gosub WaitForSysVars %start <> CHARPOSX 5
if #CHARPOSX <> %start
goto atbank
if %slowconn
wait 2s
set %BR_R %BR2
if %BR_R_N = 1
set %BR_R %BR1
gosub s7UseRunebook %BANKRUNEBOOK %BR_R %TRAVEL
gosub WaitForSysVars %start <> CHARPOSX 5
if #CHARPOSX = %start
goto mainloop
if %slowconn
wait 2s
atbank:
set %status Opening , #spc , bank..
menu delete status
menu Font Color Aqua
menu Text status 48 8 %status
gosub openbank
set %status Unloading..
menu delete status
menu Font Color Aqua
menu Text status 48 8 %status
gosub unloaditems
gosub unloadgold
goto beetlestatus
mainloop3:
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
msg withdraw %goldwithdraw
wait 3s
msg withdraw %goldwithdraw
wait 3s
if #GOLD < %did_I_buy
{
set %status Bank , #spc , out , #spc , of , #spc , gold, , #spc , Script , #spc , halted!
menu delete status
menu Font Color Aqua
menu Text status 48 8 %status
halt
}
mainloop2:
if %location >= %VR
{
if %respawn_time > #SCNT
{
set %status Waiting , #spc , for , #spc , respawn..
menu delete status
menu Font Color Aqua
menu Text status 48 8 %status
set %timeout #SCNT + 30
set %jstart #jindex + 1
gosub journalcheck
while ( ( %respawn_time > #SCNT ) || ( #result ) )
{
wait 1
if %timeout < #SCNT
{
gosub openpaperdoll
set %timeout #SCNT + 30
gosub journalcheck
}
}
set %respawn_time #SCNT + %respawntime
}
ignoreitem reset 2
set %location 0
}
set %location %location + 1
set %start #CHARPOSX
set %status Recalling , #spc , to , #spc , vendor , #spc , # , %location
menu delete status
menu Font Color Aqua
menu Text status 48 8 %status
gosub s7UseRunebook %MAGESHOPS %location %TRAVEL
gosub WaitForSysVars %start <> CHARPOSX 5
if #CHARPOSX = %start
goto mainloop2
if %slowconn
wait 2s
goto findvendor
goto mainloop2
;===========================================================================
;------------------------------- BUYING REGS -------------------------------
;===========================================================================
itemtobuy:
set #lpc %lpc
set %status Shopping..
menu delete status
menu Font Color Aqua
menu Text status 48 8 %status
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
getshopinfo
wait 5
if %slowconn
wait 5
event SysMessage #SHOPITEMTYPE ---> %ITEMS1 = %ITEMS2 = %ITEMS3 = %ITEMS4
if #SHOPITEMTYPE in %ITEMS1
{
goto buy
}
if #SHOPITEMTYPE in %ITEMS2
{
goto buy
}
if #SHOPITEMTYPE in %ITEMS3
{
goto buy
}
if #SHOPITEMTYPE in %ITEMS4
{
goto buy
}
if %slowconn
wait 10
click %x_next %y_next;next
if #SHOPCURPOS = #SHOPCNT
{
set #lpc %d_lpc
click %x_sign %y_sign;sign
gosub WaitForSysVars CONTNAME <> bill_gump CONTSIZE <> 283_248 5
ignoreitem %vendor 2
gosub checkground
if ! %beetle
goto findvendor
gosub dimountpickupitems
goto mainloop
}
}
goto itemtobuy
buy:
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
if #SHOPITEMPRICE > %MAX_PRICE
{
if %slowconn
wait 20
click %x_next %y_next
goto skip
}
if %slowconn
wait 20
click %x_buy %y_buy d;buy
wait 10
click %x_buy %y_buy d;buy
wait 10
click %x_buy %y_buy d;buy
wait 10
click %x_buy %y_buy d;buy
wait 10
click %x_buy %y_buy d;buy
wait 10
getShopInfo
wait 10
setShopItem #shopItemID #shopItemMax
if %slowconn
wait 10
click %x_next %y_next;next
skip:
if #SHOPCURPOS = #SHOPCNT
{
set #lpc %d_lpc
click %x_sign %y_sign;sign
gosub WaitForSysVars CONTNAME <> bill_gump CONTSIZE <> 283_248 5
ignoreitem %vendor 2
gosub checkground
if ! %beetle
goto findvendor
gosub dimountpickupitems
goto mainloop
}
}
goto itemtobuy
findvendor:
set %status Finding , #spc , vendor..
menu delete status
menu Font Color Aqua
menu Text status 48 8 %status
if *stop
{
set #menubutton pause
set *stop #false
}
if #menubutton = pause
gosub pause
if %slowconn
wait 10
finditem %vendortype G_8
if #findkind = -1
{
if #gold = %did_I_buy
{
goto mainloop2
}
goto mainloop
}
if #FINDREP <> 7
{
ignoreitem #findid 3
goto findvendor
}
event Property #findID
if guild in #property || quest in #property || banker in #property || minter in #property
{
ignoreitem #findid 3
goto findvendor
}
set %context 40
if tinker in #property
set %context 55
set %vendor #findid
exevent popup %vendor
wait 30
click 20 %context
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
goto itemtobuy
beetlestatus:
if ! %beetle
goto mainloop3
gosub unloadbeetle
set %location %location - 1
set %beetle #false
goto mainloop3
;===========================================================================
;------------------------------- Subs --------------------------------------
;===========================================================================
sub checkground
if #WEIGHT >= #MAXWEIGHT
{
set %beetle #true
return
}
finditem %ALLITEMS G_2
if #findkind = -1
{
set %beetle #false
return
}
set %beetle #true
return
sub unloadbeetle
set #lobjectid #CHARID
event macro 17 0
wait %beetle_delay
openbeetle:
exevent popup %BEETLEID
wait 1s
gosub WaitForSysVars CONTNAME = normal_gump CONTSIZE = 192_186 5
set %x_open_b_bag #CONTPOSX + 58
set %y_open_b_bag #CONTPOSY + 164
click %x_open_b_bag %y_open_b_Bag
gosub WaitForSysVars CONTNAME = container_gump CONTSIZE = 230_204 5
set %beetlebag #CONTID
unloadbeetle:
finditem %ALLITEMS C_ , %beetlebag
if #findkind = -1
{
set #lobjectid %BEETLEID
event macro 17 0
wait %beetle_delay
return
}
Exevent Drag #findid #findstack
wait %ex_delay
Exevent Dropc %ITEMBOX
wait %ex_delay
goto unloadbeetle
sub dimountpickupitems
set #lobjectid #CHARID
event macro 17 0
wait %beetle_delay
checkground:
if #WEIGHT >= #MAXWEIGHT
{
finditem %ALLITEMS C_ , #BACKPACKID
if #findkind = -1
{
goto checkground
}
Exevent Drag #findid #findstack
wait %ex_delay
Exevent Dropc %BEETLEID
wait %ex_delay
goto checkground
}
finditem %ALLITEMS G_2
if #findkind = -1
{
wait %beetle_delay
set #lobjectid %BEETLEID
event macro 17 0
wait %beetle_delay
return
}
Exevent Drag #findid #findstack
wait %ex_delay
Exevent Dropc %BEETLEID
wait %ex_delay
goto checkground
sub unloaditems
checkitems:
finditem %ALLITEMS C_ , #BACKPACKID
if #findkind = -1
{
return
}
Exevent Drag #findid #findstack
wait %ex_delay
Exevent Dropc %ITEMBOX
wait %ex_delay
}
goto checkitems
sub unloadgold
checkgold:
finditem %gold C_ , #BACKPACKID
if #findkind = -1
{
return
}
Exevent Drag #findid #findstack
wait %ex_delay
Exevent Dropc %GOLDBOX
wait %ex_delay
goto checkgold
}
goto checkgold
sub openpaperdoll
openpaperdoll:
event macro 8 1
gosub WaitForSysVars CONTNAME = paperdoll_gump CONTSIZE = 262_324 5
movepaperdoll:
set #contposx 800
set #contposy 1
gosub WaitForSysVars CONTPOSX = 800 CONTPOSY = 1 5
if ! #result
{
goto movepaperdoll
}
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 openstatusbar
openstatusbar:
event macro 8 2
gosub WaitForSysVars CONTSIZE = 432_184 CONTNAME = status_gump
if ! #result
{
goto openstatusbar
}
movestatus:
set #CONTPOSX 800
set #CONTPOSY 420
gosu WaitForSysVars CONTPOSX = 800 CONTPOSY = 420 5
if ! #result
{
goto movestatus
}
wait 20
return
sub openbank
openbank:
msg bank$
gosub WaitForSysVars CONTNAME = container_gump CONTSIZE = 180_240 5
if ! #result
goto openbank
set #CONTPOSX 640
set #CONTPOSY 387
gosub WaitForSysVars CONTPOSX = 640 CONTPOSY = 387 5
if ! #result
goto openbank
return
sub pause
set %pause resume
set %pause_resume resume
gosub showeuomenu2
pause:
if #menubutton = resume
{
set %pause pause
set %pause_resume pause
gosub showeuomenu2
return
}
goto pause
sub SetGlobalVars
gosub putGlobalVar GEN AIB #CHARID first
gosub putGlobalVar Gen AIB #CHARID ALLITEMS
gosub putGlobalVar Gen AIB #CHARID MAX_PRICE
gosub putGlobalVar Gen AIB #CHARID BANKRUNEBOOK
gosub putGlobalVar Gen AIB #CHARID MAGESHOPS
gosub putGlobalVar Gen AIB #CHARID GOLDBOX
gosub putGlobalVar Gen AIB #CHARID ITEMBOX
gosub putGlobalVar Gen AIB #CHARID ITEMS1
gosub putGlobalVar Gen AIB #CHARID ITEMS2
gosub putGlobalVar Gen AIB #CHARID ITEMS3
gosub putGlobalVar Gen AIB #CHARID ITEMS4
gosub putGlobalVar Gen AIB #CHARID BR1
gosub putGlobalVar Gen AIB #CHARID BR2
gosub putGlobalVar Gen AIB #CHARID VR
gosub putGlobalVar Gen AIB #CHARID TRAVEL
gosub putGlobalVar Gen AIB #CHARID BEETLEID
return
sub GetGlobalVars
gosub getGlobalVar Gen AIB #CHARID ALLITEMS
gosub getGlobalVar Gen AIB #CHARID MAX_PRICE
gosub getGlobalVar Gen AIB #CHARID BANKRUNEBOOK
gosub getGlobalVar Gen AIB #CHARID MAGESHOPS
gosub getGlobalVar Gen AIB #CHARID GOLDBOX
gosub getGlobalVar Gen AIB #CHARID ITEMBOX
gosub getGlobalVar Gen AIB #CHARID ITEMS1
gosub getGlobalVar Gen AIB #CHARID ITEMS2
gosub getGlobalVar Gen AIB #CHARID ITEMS3
gosub getGlobalVar Gen AIB #CHARID ITEMS4
gosub getGlobalVar Gen AIB #CHARID BR1
gosub getGlobalVar Gen AIB #CHARID BR2
gosub getGlobalVar Gen AIB #CHARID VR
gosub getGlobalVar Gen AIB #CHARID TRAVEL
gosub putGlobalVar Gen AIB #CHARID BEETLEID
return
;==================================
; 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
;=================================
;===================================================
; 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; (changed this line to only fail once before returning)
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
sub journalcheck
JournalCheckLoop:
set %jstart %jstart + 1
scanjournal %jstart
if accounts_was_added in #journal
{
return #false
}
if aaa1 in #journal
{
return #false
}
if %jstart >= #jindex
{
set %jstart #jindex
return #true
}
goto JournalcheckLoop
;----
;* @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
Sub itemsetup
menu get mageregs
if #MENURES
{
set %ITEMS1 KUF_JUF_KZF_JZF_MZF_WZF_RZF_SZF
set %ITEMS2 false
set %ITEMS3 false
set %ITEMS4 false
set %MAX_PRICE 8
set %MAGEREGS YES
}
menu get necroregs
if #MENURES
{
set %ITEMS2 IUF_YZF_TZF_DUF_UZF
set %ITEMS1 false
if %MAGEREGS = YES
set %ITEMS1 KUF_JUF_KZF_JZF_MZF_WZF_RZF_SZF
set %ITEMS3 false
set %ITEMS4 false
set %MAX_PRICE 8
set %NECROREGS YES
}
menu get scrolls
if #MENURES
{
set %ITEMS3 DPF_MMF
set %ITEMS1 false
set %ITEMS2 false
set %ITEMS4 false
if %MAGEREGS = YES
set %ITEMS1 KUF_JUF_KZF_JZF_MZF_WZF_RZF_SZF
if %NECROREGS = YES
set %ITEMS2 IUF_YZF_TZF_DUF_UZF
set %MAX_PRICE 8
set %SCROLLS YES
}
menu get misc
if #MENURES
{
menu get types
set %ITEMS4 #MENURES
set %ITEMS1 false
set %ITEMS2 false
set %ITEMS3 false
set %ALLITEMS %ITEMS4
}
return
sub travel_runes
menu get BR1
if #MENURES > 0
set %BR1 #MENURES
menu get BR2
if #MENURES > 0
set %BR2 #MENURES
menu get VR
if #MENURES > 0
set %VR #MENURES
menu get travel_method
if #MENURES = 1
set %TRAVEL r
if #MENURES = 2
set %TRAVEL c
if #MENURES = 3
set %TRAVEL g
if #MENURES = 4
set %TRAVEL s
return
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
;==================================
; 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
;===================================================================
;---------------------------Menus-----------------------------------
;===================================================================
sub showEUOMenu1
menu Clear
menu Window Transparent 80
menu Window Title Gen's Auto Item Buyer
menu Window Color BtnShadow
m
--------------------
Прямые руки- это паталогия!
|