diff options
Diffstat (limited to 'Data/DefaultContent/Libraries/addons/addons/pet_fix/pet_fix.lua')
-rw-r--r-- | Data/DefaultContent/Libraries/addons/addons/pet_fix/pet_fix.lua | 223 |
1 files changed, 0 insertions, 223 deletions
diff --git a/Data/DefaultContent/Libraries/addons/addons/pet_fix/pet_fix.lua b/Data/DefaultContent/Libraries/addons/addons/pet_fix/pet_fix.lua deleted file mode 100644 index 5852de6..0000000 --- a/Data/DefaultContent/Libraries/addons/addons/pet_fix/pet_fix.lua +++ /dev/null @@ -1,223 +0,0 @@ ---Copyright (c) 2014, Byrthnoth ---All rights reserved. - ---Redistribution and use in source and binary forms, with or without ---modification, are permitted provided that the following conditions are met: - --- * Redistributions of source code must retain the above copyright --- notice, this list of conditions and the following disclaimer. --- * Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- * Neither the name of <addon name> nor the --- names of its contributors may be used to endorse or promote products --- derived from this software without specific prior written permission. - ---THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ---ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ---WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ---DISCLAIMED. IN NO EVENT SHALL <your name> BE LIABLE FOR ANY ---DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ---(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ---LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ---ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ---(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ---SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -_addon.name = 'Pet Fix' -_addon.ver = 0 -_addon.author = 'Byrth' - -windower.register_event('incoming chunk',function (id,original,modified,is_injected,is_blocked) - if debugging then windower.debug('incoming chunk '..id) end - local pref = modified:sub(1,4) - local data = modified:sub(5) - --------------- ACTION PACKET --------------- - if id == 0x28 then - local act = {} - act.do_not_need = get_bit_packed(data,0,8) - act.actor_id = get_bit_packed(data,8,40) - act.target_count = get_bit_packed(data,40,50) - act.category = get_bit_packed(data,50,54) - act.param = get_bit_packed(data,54,70) - act.unknown = get_bit_packed(data,70,86) - act.recast = get_bit_packed(data,86,118) - act.targets = {} - local offset = 118 - for i = 1,act.target_count do - act.targets[i] = {} - act.targets[i].id = get_bit_packed(data,offset,offset+32) - act.targets[i].action_count = get_bit_packed(data,offset+32,offset+36) - offset = offset + 36 - act.targets[i].actions = {} - for n = 1,act.targets[i].action_count do - act.targets[i].actions[n] = {} - act.targets[i].actions[n].reaction = get_bit_packed(data,offset,offset+5) - act.targets[i].actions[n].animation = get_bit_packed(data,offset+5,offset+16) - act.targets[i].actions[n].effect = get_bit_packed(data,offset+16,offset+21) - act.targets[i].actions[n].stagger = get_bit_packed(data,offset+21,offset+27) - act.targets[i].actions[n].param = get_bit_packed(data,offset+27,offset+44) - act.targets[i].actions[n].message = get_bit_packed(data,offset+44,offset+54) - act.targets[i].actions[n].unknown = get_bit_packed(data,offset+54,offset+85) - act.targets[i].actions[n].has_add_effect = get_bit_packed(data,offset+85,offset+86) - offset = offset + 86 - if act.targets[i].actions[n].has_add_effect == 1 then - act.targets[i].actions[n].has_add_effect = true - act.targets[i].actions[n].add_effect_animation = get_bit_packed(data,offset,offset+6) - act.targets[i].actions[n].add_effect_effect = get_bit_packed(data,offset+6,offset+10) - act.targets[i].actions[n].add_effect_param = get_bit_packed(data,offset+10,offset+27) - act.targets[i].actions[n].add_effect_message = get_bit_packed(data,offset+27,offset+37) - offset = offset + 37 - else - act.targets[i].actions[n].has_add_effect = false - act.targets[i].actions[n].add_effect_animation = 0 - act.targets[i].actions[n].add_effect_effect = 0 - act.targets[i].actions[n].add_effect_param = 0 - act.targets[i].actions[n].add_effect_message = 0 - end - act.targets[i].actions[n].has_spike_effect = get_bit_packed(data,offset,offset+1) - offset = offset +1 - if act.targets[i].actions[n].has_spike_effect == 1 then - act.targets[i].actions[n].has_spike_effect = true - act.targets[i].actions[n].spike_effect_animation = get_bit_packed(data,offset,offset+6) - act.targets[i].actions[n].spike_effect_effect = get_bit_packed(data,offset+6,offset+10) - act.targets[i].actions[n].spike_effect_param = get_bit_packed(data,offset+10,offset+24) - act.targets[i].actions[n].spike_effect_message = get_bit_packed(data,offset+24,offset+34) - offset = offset + 34 - else - act.targets[i].actions[n].has_spike_effect = false - act.targets[i].actions[n].spike_effect_animation = 0 - act.targets[i].actions[n].spike_effect_effect = 0 - act.targets[i].actions[n].spike_effect_param = 0 - act.targets[i].actions[n].spike_effect_message = 0 - end - end - end - - local pet_indices = {} - for i,v in pairs(windower.ffxi.get_mob_array()) do - if v.pet_index then - pet_indices[v.pet_index] = true - end - end - - local actor = windower.ffxi.get_mob_by_id(act.actor_id) - if actor and pet_indices[actor.index] then - act.category = 0 - end - - for i,v in pairs(act.targets) do - local mob = windower.ffxi.get_mob_by_id(v.id) - if mob and pet_indices[mob.index] then - act.category = 0 - for n,m in pairs(act.targets[i].actions) do - act.targets[i].actions[n].animation = 0 - act.targets[i].actions[n].add_effect_animation = 0 - act.targets[i].actions[n].spike_effect_animation = 0 - end - end - end - - local react = assemble_bit_packed('',act.do_not_need,0,8) - react = assemble_bit_packed(react,act.actor_id,8,40) - react = assemble_bit_packed(react,act.target_count,40,50) - react = assemble_bit_packed(react,act.category,50,54) - react = assemble_bit_packed(react,act.param,54,70) - react = assemble_bit_packed(react,act.unknown,70,86) - react = assemble_bit_packed(react,act.recast,86,118) - - local offset = 118 - for i = 1,act.target_count do - react = assemble_bit_packed(react,act.targets[i].id,offset,offset+32) - react = assemble_bit_packed(react,act.targets[i].action_count,offset+32,offset+36) - offset = offset + 36 - for n = 1,act.targets[i].action_count do - react = assemble_bit_packed(react,act.targets[i].actions[n].reaction,offset,offset+5) - react = assemble_bit_packed(react,act.targets[i].actions[n].animation,offset+5,offset+16) - react = assemble_bit_packed(react,act.targets[i].actions[n].effect,offset+16,offset+21) - react = assemble_bit_packed(react,act.targets[i].actions[n].stagger,offset+21,offset+27) - react = assemble_bit_packed(react,act.targets[i].actions[n].param,offset+27,offset+44) - react = assemble_bit_packed(react,act.targets[i].actions[n].message,offset+44,offset+54) - react = assemble_bit_packed(react,act.targets[i].actions[n].unknown,offset+54,offset+85) - - react = assemble_bit_packed(react,act.targets[i].actions[n].has_add_effect,offset+85,offset+86) - offset = offset + 86 - if act.targets[i].actions[n].has_add_effect then - react = assemble_bit_packed(react,act.targets[i].actions[n].add_effect_animation,offset,offset+6) - react = assemble_bit_packed(react,act.targets[i].actions[n].add_effect_effect,offset+6,offset+10) - react = assemble_bit_packed(react,act.targets[i].actions[n].add_effect_param,offset+10,offset+27) - react = assemble_bit_packed(react,act.targets[i].actions[n].add_effect_message,offset+27,offset+37) - offset = offset + 37 - end - react = assemble_bit_packed(react,act.targets[i].actions[n].has_spike_effect,offset,offset+1) - offset = offset + 1 - if act.targets[i].actions[n].has_spike_effect then - react = assemble_bit_packed(react,act.targets[i].actions[n].spike_effect_animation,offset,offset+6) - react = assemble_bit_packed(react,act.targets[i].actions[n].spike_effect_effect,offset+6,offset+10) - react = assemble_bit_packed(react,act.targets[i].actions[n].spike_effect_param,offset+10,offset+24) - react = assemble_bit_packed(react,act.targets[i].actions[n].spike_effect_message,offset+24,offset+34) - offset = offset + 34 - end - end - end - while #react < #data do - react = react..data:sub(#react+1,#react+1) - end - - return pref..react - end -end) - -function get_bit_packed(dat_string,start,stop) - local newval = 0 - - local c_count = math.ceil(stop/8) - while c_count >= math.ceil((start+1)/8) do - -- Grabs the most significant byte first and works down towards the least significant. - local cur_val = dat_string:byte(c_count) - local scal = 256 - - if c_count == math.ceil(stop/8) then -- Take the least significant bits of the most significant byte - -- Moduluses by 2^number of bits into the current byte. So 8 bits in would %256, 1 bit in would %2, etc. - -- Cuts off the top. - cur_val = cur_val%(2^((stop-1)%8+1)) -- -1 and +1 set the modulus result range from 1 to 8 instead of 0 to 7. - end - - if c_count == math.ceil((start+1)/8) then -- Take the most significant bits of the least significant byte - -- Divides by the significance of the final bit in the current byte. So 8 bits in would /128, 1 bit in would /1, etc. - -- Cuts off the bottom. - cur_val = math.floor(cur_val/(2^(start%8))) - scal = 2^(8-start%8) - end - - newval = newval*scal + cur_val -- Need to multiply by 2^number of bits in the next byte - c_count = c_count - 1 - end - return newval -end - -function assemble_bit_packed(init,val,initial_length,final_length,debug_val) - if type(val) == 'boolean' then - if val then val = 1 else val = 0 end - end - local bits = initial_length%8 - local byte_length = math.ceil(final_length/8) - - local out_val = 0 - if bits > 0 then - out_val = init:byte(#init) -- Initialize out_val to the remainder in the active byte. - init = init:sub(1,#init-1) -- Take off the active byte - end - out_val = out_val + val*2^bits -- left-shift val by the appropriate amount and add it to the remainder (now the lsb-s in val) - if debug_val then print(out_val..' '..#init) end - - while out_val > 0 do - init = init..string.char(out_val%256) - out_val = math.floor(out_val/256) - end - while #init < byte_length do - init = init..string.char(0) - end - return init -end
\ No newline at end of file |