Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function user_setup()
- auto_acc = true
- melee_hits = {}
- melee_hits_max = 11
- melee_acc_lower = 75
- melee_acc_upper = 90
- melee_acc_mode = 1
- melee_acc_modes = {'Melee', 'Acc', 'MaxAcc'}
- state.OffenseMode:options(table.slice(melee_acc_modes))
- end
- function track_melee_results(hits, misses)
- for i = 1, hits, 1 do
- table.insert(melee_hits, true)
- end
- for i = 1, misses, 1 do
- table.insert(melee_hits, false)
- end
- --slice off the first entries to limit to melee_hits_max
- if #melee_hits > melee_hits_max then
- melee_hits = table.slice(melee_hits, #melee_hits - melee_hits_max + 1)
- end
- end
- --Returns rolling % of accuracy, or nil if not enough data exists
- function get_current_accuracy()
- if #melee_hits < melee_hits_max then return nil end
- local hits = table.count(melee_hits, true)
- return hits / melee_hits_max * 100
- end
- windower.register_event('action', function(action)
- if action.actor_id == player.id and action.category == 1 then -- 1 = melee attack
- local hits = 0
- local misses = 0
- for _, melee_result in pairs(action.targets[1].actions) do
- if melee_result.message == 1 or melee_result.message == 67 then -- 1 = regular attack, 67 = critical
- hits = hits + 1
- elseif melee_result.message == 15 then -- 15 = miss
- misses = misses + 1
- end
- end
- track_melee_results(hits, misses)
- local accuracy = get_current_accuracy()
- if accuracy then --accuracy = nil when there is not enough data
- if accuracy < melee_acc_lower then --our accuracy is too low
- if melee_acc_modes[melee_acc_mode + 1] then --can be upgraded
- melee_acc_mode = melee_acc_mode + 1
- local new_mode = melee_acc_modes[melee_acc_mode]
- print('Upgrading accuracy to', new_mode)
- state.OffenseMode:value(new_mode)
- else
- print('Unable to further upgrade accuracy')
- end
- elseif accuracy > melee_acc_upper then --acc is too high
- if melee_acc_mode > 1 then --can be downgraded
- melee_acc_mode = melee_acc_mode - 1
- local new_mode = melee_acc_modes[melee_acc_mode]
- print('Downgrading accuracy to', new_mode)
- state.OffenseMode:value(new_mode)
- else
- print('Unable to further downgrade accuracy')
- end
- end
- end
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement