Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --------------------------------------------------------------
- -- Все функции взяты из АМК в чистом виде --
- --------------------------------------------------------------
- function get_weapon_data(sobj)
- local stpk=net_packet()
- -- local uppk=net_packet()
- sobj:STATE_Write(stpk)
- -- sobj:UPDATE_Write(uppk)
- local size=stpk:w_tell()
- -- local size1=uppk:w_tell()
- -- amk.mylog("rsp "..size.." "..size1)
- stpk:r_seek(0)
- -- uppk:r_seek(0)
- local t={}
- parse_object_packet(t,stpk,size)--,uppk
- parse_visual_packet(t,stpk,size)--,uppk
- parse_item_packet(t,stpk,size)--,uppk
- parse_item_weapon_packet(t,stpk,size)--,uppk
- -- amk.mylog("rsp "..size.." "..size1.." "..stpk:r_tell())
- return t
- end
- function set_weapon_data(t,sobj)
- local stpk=net_packet()
- --local uppk=net_packet()
- fill_object_packet(t,stpk)--,uppk
- fill_visual_packet(t,stpk)--,uppk
- fill_item_packet(t,stpk)--,uppk
- fill_item_weapon_packet(t,stpk)--,uppk
- local size=stpk:w_tell()
- -- local size1=uppk:w_tell()
- -- amk.mylog("wsp "..size.." "..size1)
- stpk:r_seek(0)
- -- uppk:r_seek(0)
- sobj:STATE_Read(stpk,size)
- -- sobj:UPDATE_Read(uppk)
- end
- function parse_item_weapon_packet(ret,stpk)--,updpk
- ret.ammo_current = stpk:r_u16()
- ret.ammo_elapsed = stpk:r_u16()
- ret.weapon_state = stpk:r_u8()
- ret.addon_flags = stpk:r_u8()
- ret.ammo_type = stpk:r_u8()
- --[[ret.updgrenade_mode = updpk:r_u8()
- ret.updcurrent_fire_mode = updpk:r_u8()
- ret.updcondition = updpk:r_u8()
- ret.updweapon_flags = updpk:r_u8()
- ret.updammo_elapsed = updpk:r_u16()
- ret.updaddon_flags = updpk:r_u8()
- ret.updammo_type = updpk:r_u8()
- ret.updweapon_state = updpk:r_u8()
- ret.updweapon_zoom = updpk:r_u8()]]
- return ret
- end
- function parse_object_packet(ret,stpk)--,updpk
- ret.gvid=stpk:r_u16()
- ret.obf32u1=stpk:r_float()
- ret.obs32u2=stpk:r_s32()
- ret.lvid=stpk:r_s32()
- ret.oflags=stpk:r_s32()
- ret.custom=stpk:r_stringZ()
- ret.sid=stpk:r_s32()
- ret.obs32u3=stpk:r_s32()
- return ret
- end
- function parse_visual_packet(ret,stpk)--,updpk
- ret.visual=stpk:r_stringZ()
- ret.vsu8u1=stpk:r_u8()
- return ret
- end
- function parse_item_packet(ret,stpk)--,updpk
- ret.condition=stpk:r_float()
- --[[ret.updnum_items=updpk:r_u8()
- ret.updpos={} -- или поставить вектор? ладно потом
- ret.updpos.x=updpk:r_float()
- ret.updpos.y=updpk:r_float()
- ret.updpos.z=updpk:r_float()
- ret.updcse_alife_item__unk1_q8v4=readvu8uN(updpk,4)
- ret.updcse_alife_item__unk2_q8v3=readvu8uN(updpk,3)
- ret.updcse_alife_item__unk3_q8v3=readvu8uN(updpk,3)]]
- return ret
- end
- function readvu8uN(packet,n)
- local v={}
- for i=1,n,1 do
- table.insert(v,packet:r_u8())
- end
- return v
- end
- function fill_item_weapon_packet(ret,stpk)--,updpk
- stpk:w_u16(ret.ammo_current)
- stpk:w_u16(ret.ammo_elapsed)
- stpk:w_u8(ret.weapon_state)
- stpk:w_u8(ret.addon_flags)
- stpk:w_u8(ret.ammo_type)
- --[[updpk:w_u8(ret.updgrenade_mode)
- updpk:w_u8(ret.updcurrent_fire_mode)
- updpk:w_u8(ret.updcondition)
- updpk:w_u8(ret.updweapon_flags)
- updpk:w_u16(ret.updammo_elapsed)
- updpk:w_u8(ret.updaddon_flags)
- updpk:w_u8(ret.updammo_type)
- updpk:w_u8(ret.updweapon_state)
- updpk:w_u8(ret.updweapon_zoom)]]
- return ret
- end
- function fill_item_packet(ret,stpk)--,updpk
- stpk:w_float(ret.condition)
- --[[updpk:w_u8(ret.updnum_items)
- updpk:w_float(ret.updpos.x)
- updpk:w_float(ret.updpos.y)
- updpk:w_float(ret.updpos.z)
- -- readvu8uN(updpk,ret.updcse_alife_item__unk1_q8v4) -- было в оригинале
- -- readvu8uN(updpk,ret.updcse_alife_item__unk2_q8v3) -- единственное, что я поправил
- -- readvu8uN(updpk,ret.updcse_alife_item__unk3_q8v3) -- иначе вылетало
- writevu8uN(updpk,ret.updcse_alife_item__unk1_q8v4)
- writevu8uN(updpk,ret.updcse_alife_item__unk2_q8v3)
- writevu8uN(updpk,ret.updcse_alife_item__unk3_q8v3)]]
- return ret
- end
- function fill_object_packet(ret,stpk)--,updpk
- stpk:w_u16(ret.gvid)
- stpk:w_float(ret.obf32u1)
- stpk:w_s32(ret.obs32u2)
- stpk:w_s32(ret.lvid)
- stpk:w_s32(ret.oflags)
- stpk:w_stringZ(ret.custom)
- stpk:w_s32(ret.sid)
- stpk:w_s32(ret.obs32u3)
- return ret
- end
- function fill_visual_packet(ret,stpk)--,updpk
- stpk:w_stringZ(ret.visual)
- stpk:w_u8(ret.vsu8u1)
- return ret
- end
- function writevu8uN(pk,v)
- local len=table.getn(v)
- --pk:w_u8(len)
- for i=1,len,1 do
- pk:w_u8(v[i])
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement