Page 1 of 2
1
2
LastLast
  1. #1

    Cool Found a great new proc tracker - Zonide's Scouter

    its on curse.com just search for Zonide's Scouter

    copied from the curse page:

    Summary:

    Simple addon that monitors spells using count down bars. You add spells by name or by spell id in the spell editing window; Or by using Auto Spell Detect.

    Works on any spell or ability that shows up as a buff with a name and a duration.
    Including but not limited to: trinket procs, spell procs, ability procs, etc.
    i love this thing. its got auto spell detect, auto cd detect, auto duration detect, you can sort the bars, dock the bars and its easy to use. i figured someone else out there would like it so, yeah.

    --baconnaise-- (freakin spell check wants to correct my name to mayonnaise lol)

  2. #2
    Can you change the awful borders? Is that an in game option or do you have to mess with lua?

  3. #3
    as far as i can tell there isnt an option for that. i found a reddit post where the person that wrote it said something about being open to suggestions, so maybe if you put a comment on the curse page or something, they might do it? personally i kind of like the borders lol, but i guess its a tomato tamahto thing, and yeah i can see where your coming from though too

  4. #4

    Question

    What does this do that Tell Me When/Weakauras does not?

  5. #5
    There are a few leaking globals in v1.3.6 and the 5000+ lines of code don't really look readable ..
    Code:
    main <scouter.lua:0,0> (1458 instructions, 5832 bytes at 00000000004685B0)
    	[245]	SETGLOBAL	1 -2	; zfflcd
    	[258]	SETGLOBAL	1 -3	; zfflcd2
    	[267]	SETGLOBAL	1 -4	; zffl_buttonspawn
    	[301]	SETGLOBAL	1 -5	; zffl_ebtt
    	[302]	SETGLOBAL	1 -6	; zffl_ebttfs
    	[304]	SETGLOBAL	1 -7	; zffl_editspawn
    	[405]	SETGLOBAL	1 -8	; zffl_cbspawn
    	[446]	SETGLOBAL	1 -9	; zffl_framespawn
    	[513]	SETGLOBAL	1 -10	; zffl_colspcells
    	[515]	SETGLOBAL	1 -11	; zffl_colspcellsfs
    	[519]	SETGLOBAL	1 -12	; columnspawn
    	[566]	SETGLOBAL	1 -13	; zffl_timerwidth
    	[596]	SETGLOBAL	1 -14	; round
    	[607]	SETGLOBAL	1 -15	; truncate
    	[621]	SETGLOBAL	1 -16	; zffl_scaling
    	[674]	SETGLOBAL	1 -17	; sco_mintrunc
    	[697]	SETGLOBAL	1 -18	; sco_maxt
    	[715]	SETGLOBAL	1 -19	; sco_gmckw
    	[744]	SETGLOBAL	1 -20	; sco_scan
    	[746]	SETGLOBAL	1 -22	; sco_firstload
    	[748]	SETGLOBAL	1 -23	; sco_lock
    	[751]	SETGLOBAL	1 -24	; sco_barticking
    	[754]	SETGLOBAL	1 -25	; sco_dbmoverdelay
    	[756]	SETGLOBAL	1 -26	; sco_icons
    	[758]	SETGLOBAL	1 -27	; sco_gsf
    	[761]	SETGLOBAL	1 -29	; sco_barcolorsr
    	[762]	SETGLOBAL	1 -30	; sco_barcolorsg
    	[763]	SETGLOBAL	1 -31	; sco_barcolorsb
    	[764]	SETGLOBAL	1 -32	; sco_cur_bar_edit
    	[768]	SETGLOBAL	1 -33	; sco_r_temp
    	[769]	SETGLOBAL	1 -34	; sco_g_temp
    	[770]	SETGLOBAL	1 -35	; sco_b_temp
    	[773]	SETGLOBAL	1 -36	; sco_mfr_tbl
    	[776]	SETGLOBAL	1 -37	; sco_mw_iv
    	[779]	SETGLOBAL	1 -38	; sco_asd_var
    	[782]	SETGLOBAL	1 -39	; sco_dock
    	[785]	SETGLOBAL	1 -40	; sco_g_temp_dur
    	[788]	SETGLOBAL	1 -41	; sco_g_ckbx_mw_spacer
    	[790]	SETGLOBAL	1 -43	; sco_g_ckbx_mw_spacer_x
    	[793]	SETGLOBAL	1 -45	; sco_g_mw_w
    	[796]	SETGLOBAL	1 -47	; sco_g_remove_lock
    	[923]	SETGLOBAL	10 -102	; sco_moverupdateinterval
    	[924]	SETGLOBAL	10 -103	; sco_baredit
    	[936]	SETGLOBAL	11 -106	; sco_spell_edit
    	[1044]	SETGLOBAL	13 -111	; sco_se_tt_table
    	[1373]	SETGLOBAL	23 -164	; sco_spell_filter
    	[1392]	SETGLOBAL	23 -165	; sco_num_filter
    	[1434]	SETGLOBAL	24 -171	; sco_spell_name_tbl
    	[1436]	SETGLOBAL	24 -172	; sco_spell_duration_tbl
    	[1960]	SETGLOBAL	31 -226	; zffl_scc
    	[2058]	SETGLOBAL	36 -240	; sco_g_mover
    	[2060]	SETGLOBAL	36 -241	; sco_g_backbar
    	[2063]	SETGLOBAL	36 -242	; sco_g_backbar_fs
    	[2065]	SETGLOBAL	36 -243	; sco_g_tickbar
    	[2067]	SETGLOBAL	36 -244	; sco_g_tickbar_fs
    	[2069]	SETGLOBAL	36 -245	; sco_g_icon_back
    	[2071]	SETGLOBAL	36 -246	; sco_g_icon
    	[2074]	SETGLOBAL	36 -247	; sco_g_bv_tbl
    	[2077]	SETGLOBAL	36 -248	; sco_g_ckbx_mw
    	[2079]	SETGLOBAL	36 -33	; sco_r_temp
    	[2080]	SETGLOBAL	36 -34	; sco_g_temp
    	[2081]	SETGLOBAL	36 -35	; sco_b_temp
    	[2083]	SETGLOBAL	36 -249	; sco_g_mb_x
    	[2084]	SETGLOBAL	36 -250	; sco_g_mb_y
    	[2086]	SETGLOBAL	36 -251	; sco_g_icd_bar
    	[2088]	SETGLOBAL	36 -252	; sco_g_icd
    	[2090]	SETGLOBAL	36 -253	; sco_g_icd_fs
    	[2092]	SETGLOBAL	36 -254	; sco_g_icd_ctt
    	[2094]	SETGLOBAL	36 -255	; sco_g_icd_ckbx
    	[2096]	SETGLOBAL	36 -256	; sco_g_icd_ctt_s
    	[2098]	SETGLOBAL	36 -257	; sco_g_dock_load
    	[2100]	SETGLOBAL	36 -258	; sco_g_temp_icd_spellid
    	[2103]	SETGLOBAL	36 -259	; sco_g_gcd_v
    	[2105]	SETGLOBAL	36 -260	; sco_g_gcd_t
    	[2110]	SETGLOBAL	36 -261	; zffl_bar_spawn
    	[3380]	SETGLOBAL	36 -262	; sco_updatebarcolor
    	[3490]	SETGLOBAL	45 -274	; sco_g_ckbx_asd
    	[3492]	SETGLOBAL	45 -275	; sco_g_ckbx_asd_v
    	[3494]	SETGLOBAL	45 -276	; sco_g_asd_spell_name
    	[3496]	SETGLOBAL	45 -277	; sco_g_asd_spell_duration
    	[3498]	SETGLOBAL	45 -278	; sco_g_asd_spell_icon
    	[3500]	SETGLOBAL	45 -279	; sco_g_asd_fs
    	[3502]	SETGLOBAL	45 -280	; sco_g_mw_b_fs
    	[3630]	SETGLOBAL	48 -301	; sco_mw_ck_adj
    	[3755]	SETGLOBAL	51 -309	; sco_g_asd_st
    	[3757]	SETGLOBAL	51 -310	; sco_g_asd_temp_spell_name
    	[3759]	SETGLOBAL	51 -311	; sco_g_asd_temp_spell_duration
    	[3761]	SETGLOBAL	51 -312	; sco_g_asd_temp_spell_icon
    	[3847]	SETGLOBAL	51 -314	; sco_asd_ui
    	[4088]	SETGLOBAL	53 -325	; sco_docking
    	[4178]	SETGLOBAL	53 -326	; sco_ltw
    	[4188]	SETGLOBAL	53 -332	; sco_runonce
    	[4268]	SETGLOBAL	53 -22	; sco_firstload
    	[5386]	SETGLOBAL	55 -347	; SLASH_SCO1
    function <scouter.lua:715,736> (67 instructions, 268 bytes at 000000000031A180)
    	[721]	SETGLOBAL	6 -5	; sco_ck_spawn_gname_mw
    	[729]	SETGLOBAL	3 -18	; sco_g_ckbx_mw_spacer_x
    	[731]	SETGLOBAL	3 -18	; sco_g_ckbx_mw_spacer_x
    function <scouter.lua:878,888> (19 instructions, 76 bytes at 0000000000319A00)
    	[880]	SETGLOBAL	0 -3	; sco_lock
    	[881]	SETGLOBAL	0 -4	; sco_spell_edit
    	[885]	SETGLOBAL	0 -3	; sco_lock
    function <scouter.lua:917,920> (6 instructions, 24 bytes at 000000000031A500)
    	[919]	SETGLOBAL	0 -2	; sco_mw_iv
    function <scouter.lua:942,991> (121 instructions, 484 bytes at 000000000031A480)
    	[947]	SETGLOBAL	1 -6	; sco_spell_edit
    	[949]	SETGLOBAL	1 -8	; sco_scan
    	[951]	SETGLOBAL	1 -8	; sco_scan
    	[953]	SETGLOBAL	1 -9	; sco_barticking
    	[954]	SETGLOBAL	1 -6	; sco_spell_edit
    	[957]	SETGLOBAL	1 -11	; sco_baredit
    	[985]	SETGLOBAL	1 -8	; sco_scan
    function <scouter.lua:1023,1032> (23 instructions, 92 bytes at 0000000000319D00)
    	[1025]	SETGLOBAL	0 -2	; sco_spell_edit
    function <scouter.lua:1221,1313> (236 instructions, 944 bytes at 000000000031A900)
    	[1242]	SETGLOBAL	2 -5	; sco_gsf
    function <scouter.lua:1419,1425> (15 instructions, 60 bytes at 0000000000319C80)
    	[1423]	SETGLOBAL	0 -3	; sco_cur_bar_edit
    function <scouter.lua:1444,1555> (273 instructions, 1092 bytes at 0000000000319D80)
    	[1468]	SETGLOBAL	14 -19	; _
    	[1468]	SETGLOBAL	13 -19	; _
    	[1468]	SETGLOBAL	12 -19	; _
    	[1468]	SETGLOBAL	11 -19	; _
    	[1468]	SETGLOBAL	10 -19	; _
    	[1468]	SETGLOBAL	9 -19	; _
    	[1468]	SETGLOBAL	8 -20	; icon
    	[1468]	SETGLOBAL	7 -19	; _
    	[1468]	SETGLOBAL	6 -18	; name
    function <scouter.lua:1568,1638> (146 instructions, 584 bytes at 000000000031A080)
    	[1599]	SETGLOBAL	1 -17	; sco_mfr_tbl
    	[1630]	SETGLOBAL	1 -30	; sco_g_remove_lock
    function <scouter.lua:1650,1838> (455 instructions, 1820 bytes at 000000000031A280)
    	[1653]	SETGLOBAL	0 -4	; sco_cur_bar_edit
    	[1682]	SETGLOBAL	15 -19	; _
    	[1682]	SETGLOBAL	14 -19	; _
    	[1682]	SETGLOBAL	13 -19	; _
    	[1682]	SETGLOBAL	12 -19	; _
    	[1682]	SETGLOBAL	11 -19	; _
    	[1682]	SETGLOBAL	10 -19	; _
    	[1682]	SETGLOBAL	9 -20	; icon
    	[1682]	SETGLOBAL	8 -19	; _
    	[1682]	SETGLOBAL	7 -18	; name
    	[1707]	SETGLOBAL	12 -34	; ic
    	[1805]	SETGLOBAL	22 -82	; sco_ck_spawn_gname_mw
    	[1817]	SETGLOBAL	18 -93	; sco_mw_iv
    function <scouter.lua:1850,1895> (126 instructions, 504 bytes at 000000000031A300)
    	[1857]	SETGLOBAL	0 -8	; sco_spell_edit
    function <scouter.lua:2136,2165> (57 instructions, 228 bytes at 0000000000341600)
    	[2157]	SETGLOBAL	5 -10	; sco_dock
    function <scouter.lua:2251,2342> (118 instructions, 472 bytes at 0000000000341500)
    	[2322]	SETGLOBAL	10 -8	; sco_baredit
    function <scouter.lua:2283,2298> (55 instructions, 220 bytes at 0000000000340F00)
    	[2297]	SETGLOBAL	4 -16	; sco_baredit
    function <scouter.lua:2300,2310> (42 instructions, 168 bytes at 0000000000341300)
    	[2309]	SETGLOBAL	1 -12	; sco_baredit
    function <scouter.lua:2349,2372> (43 instructions, 172 bytes at 0000000000340B80)
    	[2359]	SETGLOBAL	2 -7	; sco_baredit
    function <scouter.lua:2403,2413> (16 instructions, 64 bytes at 0000000000341080)
    	[2410]	SETGLOBAL	0 -6	; sco_cur_bar_edit
    function <scouter.lua:2420,2471> (151 instructions, 604 bytes at 0000000000341180)
    	[2430]	SETGLOBAL	0 -12	; sco_cur_bar_edit
    function <scouter.lua:2475,2533> (136 instructions, 544 bytes at 0000000000341400)
    	[2489]	SETGLOBAL	0 -9	; sco_cur_bar_edit
    function <scouter.lua:2584,2978> (1216 instructions, 4864 bytes at 0000000000341A00)
    	[2600]	SETGLOBAL	14 -12	; sco_barticking
    	[2814]	SETGLOBAL	17 -12	; sco_barticking
    	[2941]	SETGLOBAL	2 -68	; sco_icd_dur_temp
    function <scouter.lua:2988,3370> (1040 instructions, 4160 bytes at 0000000000340C00)
    	[3005]	SETGLOBAL	15 -11	; sco_barticking
    	[3219]	SETGLOBAL	18 -11	; sco_barticking
    function <scouter.lua:3431,3476> (111 instructions, 444 bytes at 0000000000340E00)
    	[3435]	SETGLOBAL	0 -5	; sco_spell_edit
    	[3437]	SETGLOBAL	0 -7	; sco_barticking
    	[3439]	SETGLOBAL	0 -9	; sco_baredit
    	[3441]	SETGLOBAL	0 -10	; sco_scan
    	[3467]	SETGLOBAL	0 -4	; sco_asd_var
    function <scouter.lua:3568,3581> (35 instructions, 140 bytes at 000000000032C620)
    	[3570]	SETGLOBAL	0 -1	; sco_g_asd_fs
    	[3572]	SETGLOBAL	0 -1	; sco_g_asd_fs
    function <scouter.lua:3592,3601> (25 instructions, 100 bytes at 000000000032C3A0)
    	[3593]	SETGLOBAL	0 -1	; sco_g_asd_fs
    function <scouter.lua:3611,3624> (35 instructions, 140 bytes at 000000000032CEA0)
    	[3613]	SETGLOBAL	0 -1	; sco_g_asd_fs
    	[3615]	SETGLOBAL	0 -1	; sco_g_asd_fs
    function <scouter.lua:3705,3712> (15 instructions, 60 bytes at 000000000032D620)
    	[3707]	SETGLOBAL	0 -1	; sco_g_mw_b_fs
    	[3709]	SETGLOBAL	0 -1	; sco_g_mw_b_fs
    function <scouter.lua:3725,3728> (5 instructions, 20 bytes at 000000000032C6A0)
    	[3726]	SETGLOBAL	0 -1	; sco_g_mw_b_fs
    function <scouter.lua:3741,3748> (15 instructions, 60 bytes at 000000000032BC20)
    	[3743]	SETGLOBAL	0 -1	; sco_g_mw_b_fs
    	[3745]	SETGLOBAL	0 -1	; sco_g_mw_b_fs
    function <scouter.lua:3764,3839> (205 instructions, 820 bytes at 000000000032C8A0)
    	[3779]	SETGLOBAL	1 -16	; sco_g_asd_spell_name
    	[3780]	SETGLOBAL	1 -17	; sco_g_asd_spell_duration
    	[3781]	SETGLOBAL	1 -18	; sco_g_asd_spell_icon
    	[3783]	SETGLOBAL	1 -19	; sco_g_asd_temp_spell_name
    	[3784]	SETGLOBAL	1 -20	; sco_g_asd_temp_spell_duration
    	[3785]	SETGLOBAL	1 -21	; sco_g_asd_temp_spell_icon
    	[3834]	SETGLOBAL	3 -28	; sco_g_asd_st
    	[3836]	SETGLOBAL	1 -28	; sco_g_asd_st
    function <scouter.lua:3922,4047> (323 instructions, 1292 bytes at 000000000032C020)
    	[4021]	SETGLOBAL	26 -55	; sco_ck_spawn_gname_mw
    	[4033]	SETGLOBAL	22 -66	; sco_mw_iv
    function <scouter.lua:4061,4085> (60 instructions, 240 bytes at 000000000032C9A0)
    	[4072]	SETGLOBAL	1 -14	; sco_asd_var
    	[4074]	SETGLOBAL	1 -15	; sco_g_asd_st
    	[4076]	SETGLOBAL	1 -16	; sco_g_asd_spell_name
    	[4077]	SETGLOBAL	1 -17	; sco_g_asd_spell_duration
    	[4078]	SETGLOBAL	1 -18	; sco_g_asd_spell_icon
    	[4080]	SETGLOBAL	1 -19	; sco_g_asd_temp_spell_name
    	[4081]	SETGLOBAL	1 -20	; sco_g_asd_temp_spell_duration
    	[4082]	SETGLOBAL	1 -21	; sco_g_asd_temp_spell_icon
    function <scouter.lua:4139,4172> (93 instructions, 372 bytes at 000000000032CA20)
    	[4146]	SETGLOBAL	4 -3	; sco_dock
    	[4151]	SETGLOBAL	4 -3	; sco_dock
    function <scouter.lua:4193,4259> (159 instructions, 636 bytes at 000000000032C0A0)
    	[4202]	SETGLOBAL	3 -7	; sco_g_dock_load
    	[4204]	SETGLOBAL	3 -7	; sco_g_dock_load
    	[4245]	SETGLOBAL	3 -27	; sco_mw_iv
    	[4250]	SETGLOBAL	3 -4	; sco_runonce
    	[4252]	SETGLOBAL	3 -7	; sco_g_dock_load
    function <scouter.lua:4276,4903> (916 instructions, 3664 bytes at 000000000032D020)
    	[4293]	SETGLOBAL	3 -4	; sco_msv
    	[4298]	SETGLOBAL	3 -5	; sco_scan
    	[4299]	SETGLOBAL	3 -6	; sco_lock
    	[4300]	SETGLOBAL	3 -7	; sco_gsf
    	[4301]	SETGLOBAL	3 -9	; sco_mw_iv
    	[4304]	SETGLOBAL	3 -10	; sco_dock
    	[4306]	SETGLOBAL	3 -10	; sco_dock
    	[4308]	SETGLOBAL	3 -11	; sco_g_mw_b_fs
    	[4310]	SETGLOBAL	3 -11	; sco_g_mw_b_fs
    	[4312]	SETGLOBAL	3 -13	; sco_g_ckbx_mw_spacer_x
    	[4314]	SETGLOBAL	3 -13	; sco_g_ckbx_mw_spacer_x
    	[4316]	SETGLOBAL	3 -15	; sco_g_mw_w
    	[4318]	SETGLOBAL	3 -15	; sco_g_mw_w
    	[4330]	SETGLOBAL	4 -29	; sco_spell_name_tbl
    	[4332]	SETGLOBAL	4 -29	; sco_spell_name_tbl
    	[4336]	SETGLOBAL	4 -32	; sco_spell_duration_tbl
    	[4338]	SETGLOBAL	4 -32	; sco_spell_duration_tbl
    	[4343]	SETGLOBAL	4 -35	; sco_icons
    	[4345]	SETGLOBAL	4 -35	; sco_icons
    	[4351]	SETGLOBAL	4 -38	; sco_barcolorsr
    	[4353]	SETGLOBAL	4 -38	; sco_barcolorsr
    	[4357]	SETGLOBAL	4 -40	; sco_barcolorsg
    	[4359]	SETGLOBAL	4 -40	; sco_barcolorsg
    	[4363]	SETGLOBAL	4 -42	; sco_barcolorsb
    	[4365]	SETGLOBAL	4 -42	; sco_barcolorsb
    	[4370]	SETGLOBAL	4 -44	; sco_g_bv_tbl
    	[4372]	SETGLOBAL	4 -44	; sco_g_bv_tbl
    	[4379]	SETGLOBAL	6 -48	; sco_g_mb_x
    	[4381]	SETGLOBAL	6 -48	; sco_g_mb_x
    	[4385]	SETGLOBAL	6 -50	; sco_g_mb_y
    	[4387]	SETGLOBAL	6 -50	; sco_g_mb_y
    	[4392]	SETGLOBAL	6 -52	; sco_g_icd
    	[4394]	SETGLOBAL	6 -52	; sco_g_icd
    	[4399]	SETGLOBAL	6 -54	; sco_g_icd_ckbx
    	[4401]	SETGLOBAL	6 -54	; sco_g_icd_ckbx
    	[4610]	SETGLOBAL	23 -29	; sco_spell_name_tbl
    	[4611]	SETGLOBAL	23 -38	; sco_barcolorsr
    	[4612]	SETGLOBAL	23 -40	; sco_barcolorsg
    	[4613]	SETGLOBAL	23 -42	; sco_barcolorsb
    	[4614]	SETGLOBAL	23 -32	; sco_spell_duration_tbl
    	[4615]	SETGLOBAL	23 -44	; sco_g_bv_tbl
    	[4616]	SETGLOBAL	23 -48	; sco_g_mb_x
    	[4617]	SETGLOBAL	23 -50	; sco_g_mb_y
    	[4618]	SETGLOBAL	23 -35	; sco_icons
    	[4619]	SETGLOBAL	23 -52	; sco_g_icd
    	[4620]	SETGLOBAL	23 -54	; sco_g_icd_ckbx
    	[4631]	SETGLOBAL	23 -72	; sco_mfr_tbl
    	[4638]	SETGLOBAL	23 -73	; sco_dp_f
    	[4649]	SETGLOBAL	13 -72	; sco_mfr_tbl
    	[4651]	SETGLOBAL	13 -72	; sco_mfr_tbl
    	[4695]	SETGLOBAL	14 -72	; sco_mfr_tbl
    	[4798]	SETGLOBAL	16 -52	; sco_g_icd
    	[4800]	SETGLOBAL	16 -52	; sco_g_icd
    	[4801]	SETGLOBAL	16 -52	; sco_g_icd
    	[4806]	SETGLOBAL	16 -54	; sco_g_icd_ckbx
    	[4808]	SETGLOBAL	16 -93	; sco_g_icd_ckbxs
    	[4809]	SETGLOBAL	16 -54	; sco_g_icd_ckbx
    	[4823]	SETGLOBAL	16 -1	; sco_firstload
    	[4856]	SETGLOBAL	4 -4	; sco_msv
    	[4859]	SETGLOBAL	4 -34	; sco_icon_sv
    	[4862]	SETGLOBAL	4 -37	; sco_barcolorsr_sv
    	[4863]	SETGLOBAL	4 -39	; sco_barcolorsg_sv
    	[4864]	SETGLOBAL	4 -41	; sco_barcolorsb_sv
    	[4867]	SETGLOBAL	4 -28	; sco_spell_name_tbl_sv
    	[4869]	SETGLOBAL	4 -31	; sco_spell_duration_tbl_sv
    	[4872]	SETGLOBAL	4 -43	; sco_g_bv_tbl_sv
    	[4875]	SETGLOBAL	4 -74	; sco_mfr_tbl_sv
    	[4894]	SETGLOBAL	6 -47	; sco_g_mb_x_sv
    	[4895]	SETGLOBAL	6 -49	; sco_g_mb_y_sv
    	[4898]	SETGLOBAL	6 -51	; sco_g_icd_sv
    	[4899]	SETGLOBAL	6 -53	; sco_g_icd_ckbx_sv
    function <scouter.lua:4914,5076> (291 instructions, 1164 bytes at 000000000032D220)
    	[4968]	SETGLOBAL	9 -39	; sco_dock
    	[4978]	SETGLOBAL	12 -7	; sco_cur_bar_edit
    	[5011]	SETGLOBAL	10 -10	; sco_spell_name_tbl
    	[5012]	SETGLOBAL	10 -12	; sco_barcolorsr
    	[5013]	SETGLOBAL	10 -14	; sco_barcolorsg
    	[5014]	SETGLOBAL	10 -16	; sco_barcolorsb
    	[5015]	SETGLOBAL	10 -18	; sco_spell_duration_tbl
    	[5016]	SETGLOBAL	10 -20	; sco_g_bv_tbl
    	[5017]	SETGLOBAL	10 -22	; sco_g_mb_x
    	[5018]	SETGLOBAL	10 -24	; sco_g_mb_y
    	[5019]	SETGLOBAL	10 -26	; sco_icons
    	[5020]	SETGLOBAL	10 -28	; sco_g_icd
    	[5021]	SETGLOBAL	10 -30	; sco_g_icd_ckbx
    	[5025]	SETGLOBAL	9 -7	; sco_cur_bar_edit
    function <scouter.lua:5087,5249> (292 instructions, 1168 bytes at 000000000032CD20)
    	[5141]	SETGLOBAL	9 -39	; sco_dock
    	[5151]	SETGLOBAL	12 -7	; sco_cur_bar_edit
    	[5184]	SETGLOBAL	10 -10	; sco_spell_name_tbl
    	[5185]	SETGLOBAL	10 -12	; sco_barcolorsr
    	[5186]	SETGLOBAL	10 -14	; sco_barcolorsg
    	[5187]	SETGLOBAL	10 -16	; sco_barcolorsb
    	[5188]	SETGLOBAL	10 -18	; sco_spell_duration_tbl
    	[5189]	SETGLOBAL	10 -20	; sco_g_bv_tbl
    	[5190]	SETGLOBAL	10 -22	; sco_g_mb_x
    	[5191]	SETGLOBAL	10 -24	; sco_g_mb_y
    	[5192]	SETGLOBAL	10 -26	; sco_icons
    	[5193]	SETGLOBAL	10 -28	; sco_g_icd
    	[5194]	SETGLOBAL	10 -30	; sco_g_icd_ckbx
    	[5198]	SETGLOBAL	9 -7	; sco_cur_bar_edit
    function <scouter.lua:5388,5404> (39 instructions, 156 bytes at 000000000032D5A0)
    	[5398]	SETGLOBAL	3 -11	; sco_mw_iv
    	[5401]	SETGLOBAL	3 -11	; sco_mw_iv

  6. #6
    Field Marshal Tactica's Avatar
    10+ Year Old Account
    Join Date
    Mar 2014
    Location
    9942 Apophis
    Posts
    87
    Quote Originally Posted by Machinelf View Post
    What does this do that Tell Me When/Weakauras does not?
    Need to Know is what I use for this.
    In a cult, there is a person at the top who knows it's a scam. In a religion, that person is dead.

  7. #7
    Links for the lazy: http://www.curse.com/addons/wow/zonides-scouter

    Quote Originally Posted by Machinelf View Post
    What does this do that Tell Me When/Weakauras does not?
    Would like to know this too, as otherwise, it's not going to be worth anyone switching over when they already have auras and such made to their liking.

    At a quick glance, it just looks like NeedToKnow, which is meh compared to TMW/WA2 anyhow.

  8. #8
    So, it's been a while since I first added the scouter to curse.com and I did a Google search to see if anyone was talking about my addon.

    ----------------------

    I've never used power auras, weak auras or need to know, so I can't say first hand exactly the things that they do vs. what my scouter does; but, just my initial impression from a few Google searches is that, comparatively they are configuration overkill. For example there are multi-part tutorial videos and guides on how to use them.

    Between this and other similar addons, a few big differences (again, just based on a few glances at a few Google searches):

    The Auto Button - you click auto, then auto scan and as your procs pop up or as you click them all the information is automatically pulled in to the list; from there you select which spells you want to be tracked and click Add.

    A practically zero configuration required setup - which is facilitated by the auto button. You click auto, auto scan, then pick w/e spells you want to track and done.

    No need to type in spell names or id's (after you go to wowhead and pull them out of the wowhead spell url, and then, sometimes there are multiple instances of spells with the same name, but different ids, and you have to guess which id correlates to the proper spell, that get returned from searching)

    ----------------------

    Also, just to clarify, I'm not out to replace them or even be considered competition (yet the feeling I'm left with is that some people automatically assume this and go from there), that's just simply not my motivation, I just figured another alternative addon choice wasn't hurting anyone. Plus it gave me the opportunity to write an addon that does what I want in the way that I want it to do what it does and the sense of pride that comes along with saying "yeah, I did that, I wrote my own addon xD".

    ----------------------

    "There are a few leaking globals in v1.3.6 and the 5000+ lines of code don't really look readable .." - ketho

    I'm not entirely sure if you meant "leaking" or "leaked".

    As far as I can tell, my addon uses so little memory that it doesn’t even show up when you mouse over the latency thing in wow that tells you addon memory usage, so that more or less rules out "leaking".

    On the one hand, leaking, would imply that the way in which I use the variables doesn’t reconcile properly and it would technically be a memory leak. E.g. you improperly add or remove items from a table and end up with erroneous entries etc.

    On the other hand, leaked, which is a colloquialism within the WoW addon developer community for addon variables in the global scope; which, is not only sometimes necessary to pass data between functions, and typically only a bad thing if the variable names aren't unique. Which in my case, both are true, I need to use globals and the names are unique, so, no issues from a technical standpoint, so, there should be no reason for you to post that. I mean yeah, I could package all the globals in to one master global table, so that the only thing the global scanner script would pick up is that one entry, but that’s essentially, to me, a superficial reason to do so as there aren't any variable name conflicts.

    In either case the fact that you ran the addon through the global scanning script and posted it here saying "leaking" while implying that its coded badly, is not only an unfair observation with negative connotations but a false positive setup to a straw man argument. Where if I say "yes there are globals" you would get to say "see, I'm right, there are globals, so since I'm right about that, I must be right about my implication that this is a bad addon"

    For those of you that aren't aware: en.wikipedia.org/wiki/Straw_man

    With the overall net effect being: a relatively popular addon programmer gave an implied thumbs down to a new addon, so, it must be bad. Which would go a long way toward people not even bothering to try the addon. Some person finds your post, let's assume they haven't the first idea when it comes to programming, of course they are going to be set down a path of not liking it based on what you wrote.

    So, my question would be, why? Why would you do something to discourage people from trying the addon or force me in to a defensive position? Which, admittedly, I would be in already considering it’s a new addon, people typically resist change, there are already similar addons that have been around for years that have a loyal following, so, again, why? I mean, we have all seen the "NO SKADA IS BETTER NAH UH RECOUNT IS BETTER" fights. I've already got an uphill battle when you consider all of those things…

    After glancing at your curse addon pages, one of the first posts I see is, how much someone loves you and appreciates all the work you've done. Why would you do anything which could potentially deny me that? Lol I mean, like you said, its 5000+ lines of code, so it's not like I haven't also put some work in, not to mention the fact that I chose not to use the ace libraries and did everything myself.

    And no, "I''m not mad bro…" if anything, I'm a little hurt.
    Last edited by Zonide; 2014-05-15 at 11:31 PM.

  9. #9
    Quote Originally Posted by Zonide View Post
    "There are a few leaking globals in v1.3.6 and the 5000+ lines of code don't really look readable .." - ketho

    I'm not entirely sure if you meant "leaking" or "leaked".

    As far as I can tell, my addon uses so little memory that it doesn’t even show up when you mouse over the latency thing in wow that tells you addon memory usage, so that more or less rules out "leaking".

    On the one hand, leaking, would imply that the way in which I use the variables doesn’t reconcile properly and it would technically be a memory leak. E.g. you improperly add or remove items from a table and end up with erroneous entries etc.
    Leaking globals doesn't imply a memory leak.

    Quote Originally Posted by Zonide View Post
    On the other hand, leaked, which is a colloquialism within the WoW addon developer community for addon variables in the global scope; which, is not only sometimes necessary to pass data between functions, and typically only a bad thing if the variable names aren't unique. Which in my case, both are true, I need to use globals and the names are unique, so, no issues from a technical standpoint, so, there should be no reason for you to post that. I mean yeah, I could package all the globals in to one master global table, so that the only thing the global scanner script would pick up is that one entry, but that’s essentially, to me, a superficial reason to do so as there aren't any variable name conflicts.
    Using global variables is bad because:
    1) Speed - You're looking up variables instead of using a local version on the stack.
    2) Namespace conflicts - They can make things really difficult to debug. Having to rename global variables every time someone else decides to use the same name is tedious.

    Your arguments for using global variables:
    1) You need to - You don't. You can write an addon creating zero global variables.
    2) There are no namespace conflicts now - Why open yourself up to problems that can easily be avoided?
    Last edited by Woogs; 2014-05-16 at 03:19 AM.

  10. #10
    I meant leaking, as in leaking to the global scope, which isn't that bad since (most of) them are indeed unique avoiding any variable name conflicts. You are also right that your addon uses very little memory.

    Quote Originally Posted by Zonide View Post
    I mean yeah, I could package all the globals in to one master global table, so that the only thing the global scanner script would pick up is that one entry, but that’s essentially, to me, a superficial reason to do so as there aren't any variable name conflicts.
    Instead of putting them all in a single table, I don't understand why you can't just make them local scope.

    You could divide that 5000+ lines of code between multiple files to make it more readable and tidy (e.g. using the addon's private table). I once had an addon with 5000+ lines of code (in a single file) myself. It was horrible and made my eyes bleed just trying to find stuff.

    Quote Originally Posted by Zonide View Post
    After glancing at your curse addon pages, one of the first posts I see is, how much someone loves you and appreciates all the work you've done. Why would you do anything which could potentially deny me that? Lol I mean, like you said, its 5000+ lines of code, so it's not like I haven't also put some work in, not to mention the fact that I chose not to use the ace libraries and did everything myself.
    I see you did put in loads of work into your addon. The Ace3 framework could have saved you a lot of work though. For example AceGUI can make building options interfaces a lot easier.

    I'm just trying to give constructive criticism, instead of trying to deny you anything.

    My opinion is that your addon's code could be improved a lot. The people on wowinterface.com can give a lot of useful advice for addon development, at least they did for me.

  11. #11
    In the light that it is genuine constructive criticism, which, now, after you having specified, it does seem that it is, then, thank you.

    It's just that, before, when looking at it from an imagined over-simplified point of view of someone that doesn't understand programming: they would've, in my opinion, seen the post and potentially taken it as "oh, there is something wrong with this addon" but now that you specified, I'm not particularly worried that that would be the case anymore, so again thank you for specifying.

    And yeah, you are right in that it can be difficult to find stuff at times, so I find myself using the "find all in current document" in notepad++ fairly often or "mark lines" and f2; But, I do know how to use multiple files, I just opted not to, as, for me, the trade off for not having to search multiple files is in some ways easier than not.

    =\ but still, you could've sent me a pm on curse or something instead of posting it here. I didn't even start this thread, so, you cant really say that it was intended as constructive criticism. Still kind of leaves me with the feeling that, even if it wasn't intended, it could have possible detrimental effects on non-programmer (and apparently programmers as well) initial perception of the addon. Best intentions and all that, if you know what I mean.

    "Instead of putting them all in a single table, I don't understand why you can't just make them local scope." - ketho

    Well, I tried, but it wouldn't work, so, if it is possible, which, apparently it must be, I guess I should try again. What ended up happening was, within the functions, instead of modifying the variable that was declared outside the function, it would create a new instance of the variable within the scope of the function, and the modified data would never get passed outside the function, so, my answer was using globals and it worked so I assumed that my work was done, lol.

    ------------------

    "Leaking globals doesn't imply a memory leak." - woogs

    You've misunderstood, I wasn't implying that it did, I was specifying the difference between leaking and leaked, as potential damage control against non-programmer people thinking the addon was "bad" or had "memory leaks".

    "Using global variables is bad because:
    1) Speed - You're looking up variables instead of using a local version on the stack.
    2) Namespace conflicts - They can make things really difficult to debug. Having to rename global variables every time someone else decides to use the same name is tedious.

    Your arguments for using global variables:
    1) You need to - You don't. You can write an addon creating zero global variables.
    2) There are no namespace conflicts now - Why open yourself up to problems that can easily be avoided?" - woogs

    I am aware that this (this being the way I've gone about implementing stuff) isn't considered "best practice", but, it works and doesn’t affect performance.

    As far as speed goes: if this were a database type addon with hundreds of thousands of entries to iterate through, or an addon like routes that needs to do tons of calculations, then of course, saving any amount of cpu wouldn't just be ideal, it would be essential; but, it's not, so, yeah. Don't get me wrong though, I do agree with the principal you are talking about, in that, there is a reason things that are considered "best practice" are best practice.

    As far as name space conflicts go: as long as you don’t use common variable names (adding an uncommon prefix for example) it avoids, almost entirely, the chances of another developer using the same variable name.

    Let's use sco_lock as an example. It's 8 characters long and only lower case. Take the 26 characters in the lower case set and the underscore and you get 27 potential characters in the 8 character set.

    To calculate all the possible permutations for 27 characters in an 8 character string, you would do 27^8 which is 282429536481. In words, that would be two hundred eighty-two billion, four hundred twenty-nine million, five hundred thirty-six thousand, four hundred eighty-one. So, that’s a 1 in 282429536481 chance that someone else would use sco_lock.

    Just for fun, let's use a longer one: sco_g_ckbx_mw_spacer_x. 27 characters long, 27 potential characters within each slot. Comes to 4.4342648824303776994824963061915e+38 in scientific notation.

    And the longer the variable name, each time you add even a single character, the chances increase exponentially.

    As far as debugging goes: if this were a massive project that included many developers, then of course, there should be no deviation from best practice, but, it isn't, so, the only person that debugging concerns, is me, so, the point in this context becomes moot; and in the event that any of my variable names ended up conflicting, I would have no problem changing them if a developer contacted me; but again, I am not dismissing your point that, there are other ways to do it that avoid this entirely.

    Basically, I kind of feel that you're applying principals, correct principals, to a context where they don’t entirely apply.

    ------------------

    But again, don't get me wrong, I'm not arguing my implementation as best practice, and in fact, after this, I will try to change it over to best practice, if anything I just wanted ketho to specify that they weren't giving the addon a thumbs down.

    And I got the bonus of actual constructive criticism in the process : )

    I realize that the length and wording of my posts tend to rub people the wrong way (I know from experience and wish it weren't true), but honestly, despite how it may appear, if you feel I am being negative in any way, I assure you you've misunderstood my intentions or the "feel" of the way I would actually say the things that I'm writing; it's just that text is cold and lacks inflection; and if you were to actually speak with me in person, and hear my voice then yeah it'd be a totally different story.

    So, again, thank you guys.

    - - - Updated - - -

    OH! I almost forgot (again), if anyone reading this has any suggestions for changes or additions to the addon, I am willing to listen and consider them.

  12. #12
    You can't argue the uniqueness of your global variable names using the full name, only the prefix, which is only three characters "sco".

  13. #13
    Deleted
    Scope of a local in Lua depends on where you declare it.

    Code:
    local a
    function doStuff()
        a=(a or 0)+1
        print(a)
    end
    
    doStuff() doStuff() doStuff()
    
    -- Output: 1 2 3
    -- The local is declared at file scope, so any reference you make to 'a' in that file (unless overridden by a smaller-scope declaration) will refer to that local (simplified explanation).
    Code:
    function doStuff()
        local a
        a=(a or 0)+1
        print(a)
    end
    
    doStuff() doStuff() doStuff()
    
    -- Output: 1 1 1
    -- The local is declared at function scope, so every execution of the function has its own 'a' that is discarded when the function ends.
    Last edited by mmocba105e19de; 2014-05-17 at 10:43 AM. Reason: removed 'local function' to make it less confusing

  14. #14
    Deleted
    You're being way defensive and taking this too personally. No one said it was a bad addon [because of this]. Excessive use of globals will rarely actually noticably affect addon performance, and obviously code formatting won't, but both of them are considered poor practises. The point that non programmers may give the addon an unfair opinion may or may not be valid, not sure.

  15. #15
    Quote Originally Posted by Ketho View Post
    There are a few leaking globals in v1.3.6 and the 5000+ lines of code don't really look readable ..
    Code:
    main <scouter.lua:0,0> (1458 instructions, 5832 bytes at 00000000004685B0)
    	[245]	SETGLOBAL	1 -2	; zfflcd
    	[258]	SETGLOBAL	1 -3	; zfflcd2
    	[267]	SETGLOBAL	1 -4	; zffl_buttonspawn
    	[301]	SETGLOBAL	1 -5	; zffl_ebtt
    What are you using to find these? I'd like to check my addons since I'm a newish addon author.

    - - - Updated - - -

    Edit: Scratch that. Found the FindGlobals.lua script and made the .bat file.

  16. #16
    Well, the problem was something so incredibly simple that I overlooked it entirely… all I had to do was move all the variables to the top of the file and put 'local' next to them. The first time I tried them as locals I had assumed that, since they were outside of any functions, that order of declaration didn't matter, but apparently it does and it makes perfect sense as to why now.

    Wrote the above before coming here to find people telling me the same thing lol. Ahhh lol!

    Yeah admittedly, I suppose I was taking it too personally. I just looked any potential negative perception as a fire that needed to be put out; and I can't stress 'potential' enough. I see now that you guys were genuinely trying to help though, so I apologize if I went a bit overboard in my defense of using globals. I even pulled out the damn calculator and whipped out the 1 in 40 digit number chances defense lol.

    As far as removing the borders go, I'll add an option for that in future updates, because, there are bound to be more people out there who feel the same.

    For now though 1.3.7 is just localization of the globals, added the zffl prefix to round and truncate and added a basic wow specific print function and changed the base texture to a cleaner version (as on smaller GSF settings, the fancy lines look crappy and make the text on the bar hard to read)

    But yeah, thanks again guys : )

    - - - Updated - - -

    Oh and just to clarify, when I say "any potential negative perception" I'm saying, like from a technical standpoint, because I understand and am totally fine with people just not liking the addon, I mean, there's nothing you can do to change that.

  17. #17
    updated to 1.3.8

    Changed GSF update button to use truncated x and y. (fixes the x cascade bug)

    Added a hide/show refresh to the check box adjustment function.

    Removed the "Removal Lock" from the Edit button the main window (incase people decide they want to go back and remove more bars)

    Appended scripts to improve readability and future flexibility in regard to adding new features or modifying existing features.

    Fixed unintended reset on ICD/CD for certain spells.

    Re-Wrote the core. It now picks up and displays durations and CD's for spells in your spell book properly.

    Added passive CD detection in addition to the existing active CD detection.

    - - - Updated - - -

    Quote Originally Posted by Woogs View Post
    You can't argue the uniqueness of your global variable names using the full name, only the prefix, which is only three characters "sco".
    Just curious as to why? Variables, like passwords aren't constrained to a "ehh close enough" methodology, right? Each change in any character is a unique entry in the possible table of permutations. I'm actually asking, in case i assumed incorrectly.
    Last edited by Zonide; 2014-05-21 at 11:27 PM.

  18. #18
    Deleted
    Everything after the prefix isn't really "random" or "unique", but typically one of a set of common variable names. "scaling", "lock", "icons", you get the idea.

  19. #19
    New in 1.3.9:
    Found another type of special case for buff types, in the case of the Mage spell Icy Veins, where, the spell cool down information IS NOT tied to the spell id in the spell book but instead tied to the active component of the buff; Where as, with most other spells, Druid Innervate or Mage Alter Time for example, IT IS tied to the spell id in the spell book. I modified the active detection to check for cool down information between BOTH the active component buff spell id AND the spell book component spell id and then determine which spell id has the cool down information and pull it from the appropriate spell id.
    Made clicking: Edit, Auto and Scan buttons on the main window more intuitive. Instead of asking the user to close the corresponding window, it auto closes and sets up the variables accordingly.
    Corrected typo on the spell editing window: "variable Bar Scaling Factor" now properly reads "Global Bar Scaling Factor"
    Removed checks from Reload UI button on spell editing window. (it just reloads ui whenever clicked now, instead of being dependant on internal variable checks)
    Updated GSF button on spell editing window to auto unlock and auto dock bars after updating global scaling factor.
    Added tooltips to all the buttons and text boxes.

    Quote Originally Posted by Treeston View Post
    Everything after the prefix isn't really "random" or "unique", but typically one of a set of common variable names. "scaling", "lock", "icons", you get the idea.
    Yeah, I understood what he was saying, but, I was questioning if what he was saying actually applied from the lua interpreter's point of view and it doesn't. They are actually unique, so when calculating the chances, you would use the entire variable, and not just the prefix. From our point of view they seem similar, where one would assume that the suffix, even common suffixes. abc_lock vs sco_lock, to us, the _lock makes it "seem" close enough, but it's the length of and contents of each digit that matter when calculating the permutations. From the point of view of the interpreter, there are no "close enough" or "sub sets" or "prefix" or "suffix" its just a collection of binary pointing to a memory address... right?

    xxxxxxxx - where x is a-z + _ (8 digits)

    ex:
    aaaaaaaa
    aaaaaaab
    aaaaaaac
    aaaaaaad
    aaaaaaae
    aaaaaaaf
    aaaaaaag

    etc etc etc etc

    It would actually include uppercase A-Z and 0-9 too. I was just being nice and leaving those out to make the final number seem smaller.

    When I say unique, I mean, there is only 1 within the matrix of possible combinations. This table would include any and all combinations of prefixes or suffixes.

    And if we were talking about attempting to calculate real world probability of someone else using the same variable name, well, there are too many unknowable variables for that to even pretend to be correct.

    I really hope this isn't one of those cases where we are all saying the same thing but still can't agree.

    lol, I was playing quake live the other day and was trying to explain to someone how their extra FPS from their superior hardware doesn't actually make them respond faster (that's literally what they said and they way they meant it. they have a better video card etc, so it 'makes' them play better). I tried saying it like 10 different ways, trying to explain that the only thing that changes is their 'potential' to react faster, because they are limited by human eye fps vs brain calculation; i.e the human element w/e.

    It finally took someone else to explain it to them like this: "what he's saying, is that, a system is limited by its slowest component, in this case, it would be your physical limitations" and at that point I'm not sure if he just gave up or actually saw what I was saying. there ended up being like 6 other players all arguing his point too, with none of them seeming to understand the point I was trying to make. (or, they actually did, but just jumped on the band wagon just because lol)

    The reasoning behind my seemingly non-relevant anecdote, is, I'm basically asking for someone to argue it from my point of view, a little help, if you would please. Then again, I'm starting to question the point at all. lol
    Last edited by Zonide; 2014-05-23 at 01:10 AM.

  20. #20
    Right, and that's what the other 6 players said all assuming I didn't understand hardware or how games work (I've written my own quake iii mod back in the day, so, ticks, frames etc, aren't lost on me), but, missed my point entirely; I'm not arguing against any of what you said, I'm posing a separate valid point in parallel, not as something contradictory, but more to see if they were paying attention; and, they weren't lol.

    It's like that test where the first instruction is read ALL the directions before doing anything contained in the directions after the first one. You see about 95% (or more) of the class all scribbling stuff, folding the paper, unfolding the paper, tearing a piece off the corner. The very last direction on the paper is: "Ignore all the other directions and write your name at the top and turn the paper over." The 5% of the class that actually did what the very first instruction and very last instruction said are sitting there watching everyone else draw and do origami. The vessel S.S. Point has set sail with out them, lol.

    When i say 'you' i mean the human reaction time that is inexorably inescapable. There is nothing to do with hardware that will increase your own personal response time (unless of course, you're like a cyborg or something), hence, no matter how fast your hardware is, the whole system (you and the computer), is still limited by the person's reaction time. humanbenchmark.com/tests/reactiontime/stats.php

    Put simply: that's the hardware reacting faster, not the person.



    Also, i updated to 1.4.0, fixed a bug in the passive detection.
    Last edited by Zonide; 2014-05-23 at 03:25 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •