From fbc05f6df25d54f3d99c6fd0ea3eb0bb92291985 Mon Sep 17 00:00:00 2001 From: Kakarot <57848836+GhzGarage@users.noreply.github.com> Date: Fri, 3 Nov 2023 09:37:58 -0500 Subject: [PATCH] Weapon attachment rework --- client/main.lua | 53 +- fxmanifest.lua | 4 +- html/images/advscope_attachment.png | Bin 0 -> 12045 bytes html/images/barrel_attachment.png | Bin 0 -> 7707 bytes html/images/bellend_muzzle_brake.png | Bin 0 -> 8101 bytes html/images/boomcamo_attachment.png | Bin 0 -> 6585 bytes html/images/brushcamo_attachment.png | Bin 0 -> 17758 bytes ...l_extendedclip.png => clip_attachment.png} | Bin html/images/comp_attachment.png | Bin 0 -> 8783 bytes html/images/digicamo_attachment.png | Bin 0 -> 8163 bytes ...{rifle_drummag.png => drum_attachment.png} | Bin html/images/fat_end_muzzle_brake.png | Bin 0 -> 5688 bytes ...ashlight.png => flashlight_attachment.png} | Bin html/images/flat_muzzle_brake.png | Bin 0 -> 6283 bytes html/images/geocamo_attachment.png | Bin 0 -> 9751 bytes html/images/grip_attachment.png | Bin 0 -> 10028 bytes html/images/heavy_duty_muzzle_brake.png | Bin 0 -> 5278 bytes html/images/holoscope_attachment.png | Bin 0 -> 10827 bytes html/images/largescope_attachment.png | Bin 0 -> 12638 bytes html/images/leopardcamo_attachment.png | Bin 0 -> 20492 bytes html/images/medscope_attachment.png | Bin 0 -> 12020 bytes html/images/nvscope_attachment.png | Bin 0 -> 8650 bytes html/images/patriotcamo_attachment.png | Bin 0 -> 17630 bytes html/images/perseuscamo_attachment.png | Bin 0 -> 7604 bytes html/images/precision_muzzle_brake.png | Bin 0 -> 6539 bytes html/images/sessantacamo_attachment.png | Bin 0 -> 11623 bytes html/images/skullcamo_attachment.png | Bin 0 -> 17201 bytes html/images/slanted_muzzle_brake.png | Bin 0 -> 7100 bytes html/images/smallscope_attachment.png | Bin 0 -> 10220 bytes html/images/smg_scope.png | Bin 12591 -> 0 bytes html/images/snspistol_part_1.png | Bin 7603 -> 0 bytes html/images/snspistol_part_2.png | Bin 8445 -> 0 bytes html/images/snspistol_part_3.png | Bin 11065 -> 0 bytes html/images/split_end_muzzle_brake.png | Bin 0 -> 8712 bytes html/images/squared_muzzle_brake.png | Bin 0 -> 7424 bytes ...ppressor.png => suppressor_attachment.png} | Bin html/images/tactical_muzzle_brake.png | Bin 0 -> 7722 bytes html/images/thermalscope_attachment.png | Bin 0 -> 11784 bytes html/images/woodcamo_attachment.png | Bin 0 -> 13589 bytes html/images/zebracamo_attachment.png | Bin 0 -> 18364 bytes html/js/app.js | 1523 +++-------------- server/main.lua | 1387 +++++++-------- 42 files changed, 969 insertions(+), 1998 deletions(-) create mode 100644 html/images/advscope_attachment.png create mode 100644 html/images/barrel_attachment.png create mode 100644 html/images/bellend_muzzle_brake.png create mode 100644 html/images/boomcamo_attachment.png create mode 100644 html/images/brushcamo_attachment.png rename html/images/{pistol_extendedclip.png => clip_attachment.png} (100%) create mode 100644 html/images/comp_attachment.png create mode 100644 html/images/digicamo_attachment.png rename html/images/{rifle_drummag.png => drum_attachment.png} (100%) create mode 100644 html/images/fat_end_muzzle_brake.png rename html/images/{smg_flashlight.png => flashlight_attachment.png} (100%) create mode 100644 html/images/flat_muzzle_brake.png create mode 100644 html/images/geocamo_attachment.png create mode 100644 html/images/grip_attachment.png create mode 100644 html/images/heavy_duty_muzzle_brake.png create mode 100644 html/images/holoscope_attachment.png create mode 100644 html/images/largescope_attachment.png create mode 100644 html/images/leopardcamo_attachment.png create mode 100644 html/images/medscope_attachment.png create mode 100644 html/images/nvscope_attachment.png create mode 100644 html/images/patriotcamo_attachment.png create mode 100644 html/images/perseuscamo_attachment.png create mode 100644 html/images/precision_muzzle_brake.png create mode 100644 html/images/sessantacamo_attachment.png create mode 100644 html/images/skullcamo_attachment.png create mode 100644 html/images/slanted_muzzle_brake.png create mode 100644 html/images/smallscope_attachment.png delete mode 100644 html/images/smg_scope.png delete mode 100644 html/images/snspistol_part_1.png delete mode 100644 html/images/snspistol_part_2.png delete mode 100644 html/images/snspistol_part_3.png create mode 100644 html/images/split_end_muzzle_brake.png create mode 100644 html/images/squared_muzzle_brake.png rename html/images/{pistol_suppressor.png => suppressor_attachment.png} (100%) create mode 100644 html/images/tactical_muzzle_brake.png create mode 100644 html/images/thermalscope_attachment.png create mode 100644 html/images/woodcamo_attachment.png create mode 100644 html/images/zebracamo_attachment.png diff --git a/client/main.lua b/client/main.lua index 20bf1a107..aa2e9e63d 100644 --- a/client/main.lua +++ b/client/main.lua @@ -117,19 +117,18 @@ end ---@return table attachments local function FormatWeaponAttachments(itemdata) local attachments = {} - itemdata.name = itemdata.name:upper() - if itemdata.info.attachments ~= nil and next(itemdata.info.attachments) ~= nil then - for _, v in pairs(itemdata.info.attachments) do - if exports['qb-weapons']:getConfigWeaponAttachments(itemdata.name) then - for key, value in pairs(exports['qb-weapons']:getConfigWeaponAttachments(itemdata.name)) do - if value.component == v.component then - local item = value.item - attachments[#attachments + 1] = { - attachment = key, - label = QBCore.Shared.Items[item].label - --label = value.label - } - end + local weaponName = itemdata.name + local WeaponAttachments = exports['qb-weapons']:getConfigWeaponAttachments() + for attachmentType, weapons in pairs(WeaponAttachments) do + local componentHash = weapons[weaponName] + if componentHash then + for _, attachmentData in pairs(itemdata.info.attachments) do + if attachmentData.component == componentHash then + local label = QBCore.Shared.Items[attachmentType] and QBCore.Shared.Items[attachmentType].label or 'Unknown' + attachments[#attachments + 1] = { + attachment = attachmentType, + label = label + } end end end @@ -588,6 +587,10 @@ RegisterNetEvent('inventory:client:UseWeapon', function(weaponData, shootbool) end end + if weaponData.info.tint then + SetPedWeaponTintIndex(ped, weaponHash, weaponData.info.tint) + end + currentWeapon = weaponName end end) @@ -784,19 +787,23 @@ end) RegisterNUICallback('RemoveAttachment', function(data, cb) local ped = PlayerPedId() - local WeaponData = QBCore.Shared.Items[data.WeaponData.name] - local Attachment = exports['qb-weapons']:getConfigWeaponAttachments(WeaponData.name:upper())[data.AttachmentData.attachment] + local WeaponData = data.WeaponData + local allAttachments = exports['qb-weapons']:getConfigWeaponAttachments() + local Attachment = allAttachments[data.AttachmentData.attachment][WeaponData.name] + QBCore.Functions.TriggerCallback('weapons:server:RemoveAttachment', function(NewAttachments) if NewAttachments ~= false then local Attachies = {} - RemoveWeaponComponentFromPed(ped, joaat(data.WeaponData.name), joaat(Attachment.component)) + RemoveWeaponComponentFromPed(ped, joaat(WeaponData.name), joaat(Attachment)) + for _, v in pairs(NewAttachments) do - for _, pew in pairs(exports['qb-weapons']:getConfigWeaponAttachments(WeaponData.name:upper())) do - if v.component == pew.component then - local item = pew.item + for attachmentType, weapons in pairs(allAttachments) do + local componentHash = weapons[WeaponData.name] + if componentHash and v.component == componentHash then + local label = QBCore.Shared.Items[attachmentType] and QBCore.Shared.Items[attachmentType].label or 'Unknown' Attachies[#Attachies + 1] = { - attachment = pew.item, - label = QBCore.Shared.Items[item].label, + attachment = attachmentType, + label = label, } end end @@ -807,10 +814,10 @@ RegisterNUICallback('RemoveAttachment', function(data, cb) } cb(DJATA) else - RemoveWeaponComponentFromPed(ped, joaat(data.WeaponData.name), joaat(Attachment.component)) + RemoveWeaponComponentFromPed(ped, joaat(WeaponData.name), joaat(Attachment)) cb({}) end - end, data.AttachmentData, data.WeaponData) + end, data.AttachmentData, WeaponData) end) RegisterNUICallback('getCombineItem', function(data, cb) diff --git a/fxmanifest.lua b/fxmanifest.lua index e9cbae030..c367492e8 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -1,6 +1,6 @@ fx_version 'cerulean' game 'gta5' - +lua54 'yes' description 'QB-Inventory' version '1.2.4' @@ -34,5 +34,3 @@ files { } dependency 'qb-weapons' - -lua54 'yes' diff --git a/html/images/advscope_attachment.png b/html/images/advscope_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..f92afb1d0acb1a4027409859079a790216eb01ec GIT binary patch literal 12045 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 literal 0 HcmV?d00001 diff --git a/html/images/bellend_muzzle_brake.png b/html/images/bellend_muzzle_brake.png new file mode 100644 index 0000000000000000000000000000000000000000..a072ec347b397c5e97e51d6b79906f43a362d8e1 GIT binary patch literal 8101 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 E0GHN9RsaA1 literal 0 HcmV?d00001 diff --git a/html/images/boomcamo_attachment.png b/html/images/boomcamo_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..5ca3c9ed4a77f1dbf0823570dec21614afe30269 GIT binary patch literal 6585 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 z zBtU-2xBgcf-&_SKVbB}gn3`NH0rwi3!UP>PdMGYs#b}#`?OgK>oXie8!Fy{<_F3K2 z5A{`l*!p(E!f@fLs3Mw8PX`MH(8>v9ZQsPpdF@BNZj+UUP#Sv4XtR?X?T1cbQ#T*P zsTd3f|DnvvM|G}8iM-av%iGvqth9pI8O95xG$LuGjI-ZkD$pH$$;X=^g3J{PQyohN z|BKoMgk;dp07eOh#ng4ZxT&rABN&rqN#6Jhyw>y_%NV`x1vz?bX);&H4pC

M(s}}0fS}N4 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 p4X62$|M}pZsnbHVqG&M?5TPd-MiczapC`xO@ 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 oRtS#vLatp1Z6SYWClQV#8IS* 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 JPDHLkV1j#`@bLfu literal 0 HcmV?d00001 diff --git a/html/images/rifle_drummag.png b/html/images/drum_attachment.png similarity index 100% rename from html/images/rifle_drummag.png rename to html/images/drum_attachment.png diff --git a/html/images/fat_end_muzzle_brake.png b/html/images/fat_end_muzzle_brake.png new file mode 100644 index 0000000000000000000000000000000000000000..f5b309906fa9188e787d138a50eb7f0ae65e3cc3 GIT binary patch literal 5688 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 literal 0 HcmV?d00001 diff --git a/html/images/smg_flashlight.png b/html/images/flashlight_attachment.png similarity index 100% rename from html/images/smg_flashlight.png rename to html/images/flashlight_attachment.png diff --git a/html/images/flat_muzzle_brake.png b/html/images/flat_muzzle_brake.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5b1ebc105c764e50cf8f64c93ac95c7762bfe4 GIT binary patch literal 6283 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 literal 0 HcmV?d00001 diff --git a/html/images/grip_attachment.png b/html/images/grip_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7b1a4952dab6af035307e1130e421e3b9dec00 GIT binary patch literal 10028 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 Z_>-fJH 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 literal 0 HcmV?d00001 diff --git a/html/images/largescope_attachment.png b/html/images/largescope_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..e32425088d7f9e3de4a631b0268cc983e067650a GIT binary patch literal 12638 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 literal 0 HcmV?d00001 diff --git a/html/images/leopardcamo_attachment.png b/html/images/leopardcamo_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..36d9d1e3dfe0f116e568e729df7bd969ae6c020c GIT binary patch literal 20492 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

%6w`9KrZ~2J{MpY%a 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 TPw;*#00000NkvXXu0mjf?#0dc literal 0 HcmV?d00001 diff --git a/html/images/medscope_attachment.png b/html/images/medscope_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..7f06d1487e468623a5aaa003658f0dbb5e4b17a8 GIT binary patch literal 12020 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 literal 0 HcmV?d00001 diff --git a/html/images/patriotcamo_attachment.png b/html/images/patriotcamo_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..3befbbd5f7462b7f349c031d6f00e13211fb0db6 GIT binary patch literal 17630 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 VNC9b(JHR;&Qj$}bt(CEe_#dFQjv)X5 literal 0 HcmV?d00001 diff --git a/html/images/skullcamo_attachment.png b/html/images/skullcamo_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6cc5d741045643ee24c7f2d31f83f371206410 GIT binary patch literal 17201 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 z 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 literal 0 HcmV?d00001 diff --git a/html/images/smallscope_attachment.png b/html/images/smallscope_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ff82fa60b03f36633a5aee1bbd137c5a6724c5 GIT binary patch literal 10220 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 CO$+J( literal 0 HcmV?d00001 diff --git a/html/images/smg_scope.png b/html/images/smg_scope.png deleted file mode 100644 index 7c534367dd39e66bd7e12ef988a265351a4ee466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12591 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 diff --git a/html/images/snspistol_part_1.png b/html/images/snspistol_part_1.png deleted file mode 100644 index 94cbde79beab1b44164658c015c6972c3580e673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7603 zcmcgxcUTkMn@#9VsUm_x2p|E46lwxUFF~3#MGy!{=p-?;fFhwNO{x?TDN64mAfR-l zN^gn?sGz7IRZ)ttQNOmkzit0)@=WH=%z4k-&b{+IH&JFL`iIyA*#H2*A+&*xIqi)5 zd9X0ieo1drECB$Zf}6IsnI?|tga?`HYk?qeBvM%l0DvT>#J3oBnDIrl2vuNTWDySH+Bte86DX_w_2*9CgZD zP2?tHD+k$u-sr@PEA?X1;R)SUyJsbMo6(h%n&PGr>2XZysy91y@}oX|C}LkY06w@2 zeUuURs_5cm+xz4u$+v;c{hyZ@fRQO_;8QHniHU4BEOEo`l|Xs>I(>g!jOPLWN}c1! zik`_*v)Pcs5omk0>Hd|6`MR_^vXTsJya51q-k%2$aObW70Kk;*W_iKqg0T?_OZ1Y( z{H(4l#fwBk0|2V(6cPsOf%gG9;a%JaYT(r;EntuvP7Qos!5C&t(#E^G83dB?7J(*~ z*gy{~5(id415%}+Xart(9}I}%lflAZ2#^v|7Op5Sr+_#OLckC(C=3pjgUP@ZPzo@VoHFQ-518hSjB`er>*)RA zi*}_3cJ=Wgp`cKIe}7qjIawmv1xk|&5(+~=5eOL?LdH9Q;De#a5WL0yWYEETW65qL zA2%Wa^pg?eMD+Dh1Jfe?oq`w1*!VAEg7+VVqLmCv!H}SESs2vI>t|lS(B3}g_`k#W zmuPRx01_T*j`t?|lCgLiTYL~;N|3<5X#O-92WN{&p+*d>j+20 z(m4L|ib7&=PI!4|jEs^z9wFo8Ok-1qDay;pVc|GAC1;pCPQm$4HZ;N82SdQ(|BS|s z#)OAqXiEtUD+8mQWE64o$}-AIicT_$icVMz77s%x!hhSNw8?mk50Pw1Bzpd-U9&%H z1Jc%}X%(&nf}D3F;E4X-Qonruw!!OQeDG>unwH@-FER)vOSmFR0ggf-Pr>9+FxYRX zF%jqH9Pke)9QG56fT83OD1`jKgVH7v4&#IQAHg^*%9%*^!q7D3=7n*=LrDY|FzD~% zX%jt(WSV1IbaFpu!|&$l;K^=&c$^-Y=mq*EXO!E&C>%@?4%b6!>%bK?HQ{hwO(arD zTUQ&VsHlXL*U^zz2LEA8YuJC1z#q1{|D`STuV4(^ylF)b_+zqL;4l9%@^qu|(`E|_ zgZ(*i)xh2uTFgJ4{=E6G0#<@4D!?#Gcp0Rk5==%xULGmqgmuEwl!B0_4e&Uu9P&?l ze^)$>@>j?HbsK)W@g_R^_+!X;O&6NR|Fb9%w0ZPTMf^6xx?%_}c-le=1^-O*=Zf=x zPv(Co+usiVACrOp%;tBKpuffRcmIAp`^Q>K%l+3a+5-M__}80*cJbG{2T!2YiA;O5 zy!aG02ml=MM(b!=QeJ+(WD_rR-mkefsk63T{)uh5wMX?^h#Y6SGS;Z;RxcAnk9KH4 zIzx}eMsiD%LxKaGGlUmJLI}`T$;I$?Z-8x6acA9SW;_+YC%_0|1a(3HQUEDEpaIYT&Zfbp5q%C| zev>YNF2RY9O8e#l^8NwTTQOtfRkgD1VgxzFze(ZffTUv^o%yMI>XrL^99GADFWWNR z;1EH}@pbb8EdXS4e1hii(~$&?5%Dly7GME1E`-783j}ov5TGhhf+HcCr3R9e3qWuT ziLSlFr_*S)P^0{-K+}WmC{?kqOmwY0)!;Zh(D0LJvA*){Q}7e;OF$#g$kZZ(2Cyf$ zZJ2?p0HzvZcC`9rT>khKKHXyXJJxI+B(CoDBZ4o(j&aU zb4R*}7(bX2%Tgd?BvSY(4d&> zqO$Kq&5(0~D?%UNRe>Od6Pdi!v@LMMHvqYerpk4-6T7yhcC%wXvAUT4(AHqe7P;Z6 zBFebH?bE{A+J_$=&xsBrzCmQZb$+%^T|10Qp}&CW!waV`6njb;9=GlQITmioCff(Rd!iorb>jKf^_Lg%$ym8R7W{u%Boa$naixs+cbGcGgh^w66#qcCYgc)LMz^nE?Tq{3*TQT0_)O= zE-~5w`Z-uqzYCo>`}*4S!@f%bjZa3rGTrMk7C$?C>02BrC)7=?q|5btry4!CeB|#J ze?pk!h116eS2z#b9IUZWKb(#RD`pO)FMVIj;vYL1wAB_-myWrZp;Bmius`$TNATG> zQ**~YrB3Z+{ik#?k^+mJbaK@jcp@al@O`S4>{Pim*5yj+l?pGVN76^09d4&8d{UgA znhH$}nw*}+&mFXJPA#ebkb2_x8N0PVkzLh`V{%8>d|>Y1400A=I>@P5f}hX~u3EFn z&#U_A+PY_;kWjd6kUfx45#ms|fAdP~W90-TwQXexua7djI>>{6QY%tw1M>!Dp4 z*RZy5zu11}Kwg(Yd?H=-XW7#8zFX@9^oqjq7Ybg1OPgJoxFjN?YmAaot+e$DDl7-1 z828Rt=a(0|A1d8X_EPezBHLz~>|SlMFAW_^0gU=mI21|*B3b!uE9ew6RF+?pdajo3 zom#!tbG%zOi@WUun+1^0Sn$lvL4a0d%bTDNC(-tYna(|Tin?81v{r-27%GVT@v_d! zc-Qnabr<=3-y^roQ(g0tw)RUg0OZ}US>T*b+%RFhWV-xOP?b$3;ksF#kWi+D%#$`d zsN+Q7b%hLH#q1}Z%^Td25uVC-sP1-($A=Oe!tG>6m=AUEv1E#-!gk&xj%75407L;S zEV_0_fcnSoAErjO^Ov&pIvs*vZ|r+urK=#uee#W-#vS6>Aa^^ zd3*gxN4&8HiA%@)L^uGAMv&=ZA?!$|Zvu1-Q%DOIkl|^N|M^l0mF4)UQ*&z1D(qgy z&IKKGEdjo#_6*V&r*;PUR=2DSLd@1T)+%w)XgZ zvAio3Vl(mi(SV!y4Nc9HYgFk{O{v6td`G?|N*+IP;^FrG2}MEE7dX@#1&9bzC)a*n zBrtugDzv!;ty{yPoj>gosVQCI8F}b?aF=2uor+U_I5Xh}8{XG2ioqU|^PS-cL zuRXQj8GQFCcyIZ0Rnd+tBP4s1=SR4?#XuQBg5EHd{hd>0);z1TiSymG+bPB!u3nxm zuFRM$IT3S%*nr$_p;IN6()}fq-wkU?)4akOpyYMRA>M-d8jQ^mKN6|cx%wFH6W_)- z=I;A9hh(jxL7yOOl;dmbR}H`O#ZG61v70WWX(Liw0WuE-3qq#{+^@^LKYR6X2{t_k z5<%Y1)QZPnK*M7l2{maYM79^Yu!zTS44_*ZTVU-PnGiu=zJfs&SZjaksDJhGP;B$7#pGNzHNrzMK(mq!zJ`_clS|tX59MbS52Q%JsO_yTDb+8W*oG0t`$%S#Z-pZ+m&QFjS)cI&3+c7v3&jMqy?{Df3-yANVirjL3tKaZoWzM*MqYKc(e z@WF5SgcGBk8**X?XEgdXPH2sjH~i_U@X>E}Zy;!-Q-d8jH#Gj3xz|>EOj^f;7ifm-IDuvtE49x#Z_j?%V)FS zbVzl)`JOiRaT%pdPR`;ZIE=_QF_^x1HT&sq*m1RKS4))~#uN{~vQ_|L1&PK+xP~s* zTqsMLVC&!#$lHtpL%1x=b@ku+A-E6(raRbK_rWI6z4S;)tdY2PRmnz*DPKy(QM!=F zSH2(xhT!9QuR?l1CJ^3chuKN6?B%}eYkSEO{~DN3)@CUXAbl>b+F2|tZR+ydv$2ru zpldCYMioM?N^Y0Q@gT9*VKnvRMf3W7NfUoSc!XzweAdH+Ie*F-O#}ki&ICbm z7Azncm>B0H(_{_qxbHOr0iu;40EHv+%v^gMW5cKMXE_wwmK?D2cJ4Z5gSGLEz-IKg z#)jODp$f`*L}MEKYQmHon4TM72mF{0uuBx&xpZeZJ*}>;Za=i$^J$8HkBXBj7nAtW z`NLUbz#+X@J?--6LOH2Npsgd*JS1GbU~*ziuABp@(m)P#|6W*!I6RkuPK2*9*s(d04YSlz0HCBi#Mi?tZlzL>b^)1FLiZ^0%_w2h z%D2c1ylwP$&o7~qP{#z5VzZe;8{sB#<>yW+^vpmCU3lcqK8-4PacM+Mqjd&verivv zJyPhlYWT`nbY7>v0{D`gC1TB0)%2m=+cj!kG`G*9<)YphQqL!Y*5vRFkx}Mev$yN~ zJWsN!fKXV2sN2_5Z&exiO`ncx2_LgZZ&+Jx-`tD}<>OWw1!XdksA?HQM^`)*gPCLA zi>bb!M`A^_Pec)L`~Gs43suk+!~RV=KOU}!)E>hUS-~BzHz$PZ*T#&WtjiQdJte_7 z8mXcl&Xl|KS~n!ZKq>D}`A1RR!RY(pMdq~>RnWG9X1a6JVEsKbsteph@FG_6BpZqI zNFz{;xWMMF6kZL{;$rFhC4!rGL9D}CaqZeZ61~Ybp`72SQ=XS^QD1Mj`E2p?PlVL8 zZ@Tu_&NFJ>h@K2+J6iN1Pdm-edR%9&Uaa+lncTbf>rLufofh6s&Yp<~a^kCN zaYiYYiELsb$2pWQ$f@eRiwtb)E2w5nQVP4m@_a)Sh#{@!Oqd4RkMRxeDlc{D#AKDm z9JVt*Ybbm+{^UE3Wa3j+{4pKPHTh_j=A#@paz|{}N~ZcQSH#Q+yCn>4)nxY1J=9e0 zp=i`Fg;(y;rv|>PX}dmMzb5M}?d?Cfys}5Cu3HBmdoWTYVP&j^WnV?8R0qT!fW7Y@#TJ+5Ll7y(%WWN7TC} zD_0sUfwqL+Vy1YgYFKMeQTN96N*)%$ww`bu3;v#&b}c?VCv|^jy3w^u$_0fTo>v_n zb(aL0>*hw9Fhgy3(T5<3?Pua8aT-ZwUoJ*7i{t4<)6&;i`gli`bEH`#i~YItxns-u z4;K;rj+pz1Q~}U;uFzLDiIuw^OHc)vcPuh4z?cDBHI1(?Q-?EB;^X5SRQ%uU37@Xj z*D$kjLS?P1n}@`4=)LOqP`Rvi#I6Zal>;^`OCWw1O}niFWr8Y+A32Xuw9*dXves3+ zJA1NYlUf%2lJ}dy(Z2o+lfo7)$7aULH8|(`cY{9mSNaR|vtmw~!iRJ{0#zKAhQ}Uu z|G4t)jKHCYgD)H34ql5`KYM3W^3}r1`%H$n0?tOlnd}~|3za#C%ySxjk+hZ3D|9tD zeVBdXE-5<=!lxU}dVlelB91c|vkU8jFt!B3%b8-Eh@)wR5b#-mZ{Jc~Sb;E{OT%=Y7Io zgIZkPFE;r~vEJut^Hf%DMlSd^I>u2p!lsqZyg#LCg~lW#i}P7=tH@Z|uM|xtX_$vICD3!P;}n>&)fXOESJxjF^iKU$g^JR6<${2PB+#Pi4l5)gtrEi0oOEV3=F~@QwQX~d~ ztYVNq!W)6fxN*LIj}#te3?g$&KexAPHSk$ShuB8A?Q)F6dS7Vbc_CDk;ErMXdNoTV zG-P9qT{rkIWNeCE6s|i$0k9ku#7_Z8modE!wnYM(HuQ zgLNzHw7ULV(PwNfSLYA+soR6B*;-St0E;mG~QU>qwRPs)2*4%=r1Bt;G?NS7;M`dW0uFDHT*_)6r?B^#{d#O3q3BhuA79WKNs9^oyEzFC0H1Y@caT za6qr?TR7_}T^rc3O4zzHPXFe~86PqG{-eam*J_D$b=?Sc(Q`K?H@Q-KfploW4s_%E zI*H<|EYMge-B)EJyHx8uwxt?OXSjPbs)RrN#krf^9QfFczWqu4i}QxTB#9a8KBeY6 z`ANR-_qJ!YaR}A=-~%ryx$LvOj&DRAcoLT5eS4?F%}Jwf22;(@6dmW~>N9$GusXDT z!NXk0EL_W`QMD=}6{_BxtEX%3SfBq|o)-}4Z=O1ribhBy>n<0s_*TKoWYB&}(RdbOfXe0-_=yf^_MM zG*Li7P^tA=DcQTpmmagn*jg- zoYc|A8dH7=zb+6h<=ba5+XMihLb+;a7^)Gx9f=TQEp>>PG#V{04giQ{WT$oN_8PLs zck2(h@YalKkcBYRBvoz3yKAny#Ox%m)ikQyDccH6qWg0!c85gqEb>`Q&b(^6|qUG3{sG9J__`FowJjLW*?Coox zKiy^ga7jYE^YQof_=6?_9!B&adQ$L6l$xafF388l+s~Wi;{D%1|NZz6B7Oy+u!Xtk z>q-%gg9p|d@Ba%@2df07Jdq-}5-`#TS(JkuN=8!7iGY-pLCFv#9c87_k`6?qj3Ywc z2~EHg{=)gE|8E@;yzvx_zoTLhPDn?2I2m&MEd;g8Yq zB|7+d`QGk5hOcn6Zi|KUT#I`|QlpcE}jOTy8T2ssmJ zSqw@VgFv5$BQfyb>0$J}39e4T|1gz?|1w3uF)}C&T=su4r3@s3gP+6y)tG?CIC=Ye zI#4v_>gnK2g!y+K2oL(Ul2|3DmE zR$5vUt$~%6Ra29e#;KvvavC@dxU8%kS_X@ik%#{2OX;wGlfa+8xc}A{_IEPct|SWS z!G8|+OT;UG-g&rE@F}AO9%cJd2!@Fl7_Q#AhXqCil_(LWXO z+X?UD;N?uDOr$XAuQGqlIREd({Lf_jJK+DvVqm|j`Q1sd-(vb#|NZgoA9F3G_CJ~^ z6Zo&&zgG^*pTE~0q8EiHU&_idqIC9mcH?0SLKAy{7@#;d}L$N6~5nbT|nYPNd*4A@5ZP-Hj zh=gWKqny0bvGC|Ut>X6>EJabbo&NS&@YXv$n8eenlS^6WsP)*U)352TdlD|CT zPgjB*KBOc3ZcbBzP@3^9{ru@a-q6(15ma``N8Bu}3tOWne@;C3oW3mIVWjFZbYA3Z zS%&D?1A0!uLxpnlVE*)Ba{z6M>dP`b>R@>CWbP*QG6V>C{IR`um3RAe)GZ`HZ`W3IACpTGt`TW=wX=*L+(X0oVH~O{D(*hI$Id+F% zltzXNn7Z;W8zN}oi5_NvL62#f9qmgUHTF#8W|>fcZ3t?`;&vwyIC#Oe|IOt$ObOgw z>|Mfq=3HVDG7-q3(K*!DMw`KqX-(ZQMqbjNp|9F5`f;dTM(oMRwtV=n40!* z#?-7*;Wq1ZAcCsmG`CmW7PM`v6+uv{+5PY9*z_)lF~oRdHY$rcip`#iy32}@8Z1l} zixvdr(g3N18Q5UdY}A9Ls^F*z20@S_qaw1k@oDB32_8nx{BvS+R6y^}N1^qjW!|2& zivl-~Ng%<%Z@nflnR2jOH{IfobE$Hz+~*XOl@ID$YwQ#h3oqH4y5!S(E`!zI=;60D zx%0S2LTmTL?lS;NlwuM9r*BV%rga3qEWKV%qid`40A$Y?V;z{fP^1N7dz}Z8po*eN z?1@g8FS-a}NGwf&u-T_XnK9^|mszE~$u+^w^VNa5)-1--zB<~NmMXTw^@Nj}n2@TdE58|Wzft-CWo_|o z_WkG--bS$nK(~<3>N7?iPz~ z;K&?cpXPL_E@|lYorz+ZAoZzI`b+0-rfa-PSlCPK(OhOOsXYNGSr3IH z2TRFj=ct}SK}rlX?Be_vd_?yj-_3+PLzyUJ-=U9 zCD&5`%>z?|VtewNW1%i>KL>@csRH4eWviGfGkz>X;us={obb}0Pad8%W-g_l4y_AH zT_G?)AU-zVOT|jGyIYvqpb%Ym3%nr*4ron%puFTd+Q|i^n$Ty2syj$#Q7gIw*SiH( z3vDFztgLRMvW)59S@ihcTxd^ovJmzVf2hrz9IWH49PlZVbJw^!t5hwPZVMst3DxvlS}GzVud`uuvJD7|&l&U2aeovb z-pII^GVyFSIB0pH@L9-={gsw30z%D*qq(^`c8uH9)C(Zp*TtCv2GWIG?SPexJGa)v zZzb2PzHH!2AMSxanlL(Kd(+2l;r>#AZduW(p1xw7dpNlxaD#V9OVeG(GYQ-SX;B^P zZ>_m?+M&TqZh5`cE3=Ig4=*w>oJ5VhD2CKx>0i5%q;~leK_jG%5!6UannrpgTQ|;3 zbJOynkzF4lMPmjbXKA%+UBCZDP90=ub?e*(Uf$t_!uUP@q^E3}?pZ`uq5Mbk=`I0} z_sF2Z(gY_>RufZdPrAvcytG*Oz!jQN6LH)?-m^I7sInQDo=l29Pq+r62uwb$<$h-T z^b>nsRjb>zVH+y!XYx&6+2IDxh@8riNRI{Rw6G)Zgwa}5PpH_*eO0*%UQ6nyCl8q@ zbM@HCNj>Yldo@>2;VM%*EnIwPv0}%?N79Y4(O*mF0%SRZ5khy3tpc0lQ3Pr*q4I z3d=?u9MfVxRwj6+&z0D98^s(mFh_dn_ckg+wkTH6jUiKZKtC%PftpG_Gfz?Pbc=<+TzAFYe(#F?`RmxeA_ttOa6X)itmN z7baaRbrwq;z=IxNYb-U}GzFIX5AKRgps8bMx+LbouT!$9At|Jv8csjaWF&wQaB*z) z+<1BpEy3p#{%bCHv`S)Vl7)q(lTV~zbf0-d>k=wggqdlb>pH?;Cn|1MI0{%TgYC%{ z?a%JLZE}ul5Xy6>fY(FuV%E}qARJo{^l-!T2&ytcxIZ`s$-6Dt*)yce9)3xC7fgGXD`>a z)NZ$20b-?RY0tjYUU@!wVAsK}|B>~zkK&R3elR{85m9kl859w*`C(x04z2?`$zoM& zK+0G`ggy|U`lfCW{^jM?5gt)w(1FS`*~>D1wa0w_HNzLjceWKkov|L{WV}L@UqP;7 zVl7+LsMT9HjASWkyMVXXit*HQF48=I-3nURXhcJ6x{yO7f^8L zw)TWbE|5^GM8MjmT^==NWHqFgXv^(|61U0`;$X; zXa0q+s9%>>zfUH)eMe*+oPUwM!e`{s_%g4pp}%_mf)iFy(X}b z=t;0rfbDU82T35Yf7!BM4p3U}Rkk;KFaEOP_rM?I9XEXOQLG? z@Wtk;XHr7GG4RehQ%T9iQVw=uvh*wbWq=$Jsk_8(|%Vp z(&02+fn4)Dx^HYP~4;k5X_Lq;Vlx=6yIA%f~xo%PeHg8V0 zZ#{4=n`^A-TItnNaaf|$$(0%l|FAbkpdR&hRo?6mR>|&mv4gY@YRs~!x_WNjA(}o> zwoXiTio+RMD55*RyR>^nK%mY8D@q1(2msie_>TzpE~l zoF-NZ$*KXY?^j(b9w(e+wyirHa`StYqIU|#i_CbR#B{x@FM zvggqZ1*Uwo3-(aM$~+X8yD$rp6e*vY-;+e%P$VZe;B6KpKery#yBX);Sb6j(IN43< z-I@4Rlso4dziR1(aFl&;$rI*U32TAnDWW68+>}v!bBE98jx?arqp|xQiH)mj!n9uR+|m4$f1E6AY*l zv|7D4VZ}nu#e#iqPN9#5lT^*Dy~-~xztEVYRTY9(Clrpbun4GqFsQdG5p&eBV~t~t z6FpneqGwzjpc0eEV4aUGWzQ=W6UD|hu3XIR&CD>{6Qbijevqflf*|2yN0g$nNS-Wo1b$vs~y^Nq%!!8CiyQsCkWP8I~>H#Oz&k)Ok#Wz z*(db3K7I4ue81huL)BH57lQzNx~Uj(G%xUT*Za8j>%nnk*s837Kp5-LoK>9B_MHvi zFCnN_*!_merLFz;-rimn%8vQSmEPeYR-P-?oQK(U@YkdpZ%HQ~5-mG465Uj5xDVsv zj2UJ_M;1e79l0B?IM_O6nnUZdz-G&7Bg&trcT3m#l1FPNDl@KrlJv`WKH2_pmPu8F z^*L1@RaZ#+&r!FAgDH-yg5KvDW@R96Lzczg;lkm?KWb2Y?2QQ>8qYX9>+haN!soyfLpuV6vH8oC#h3d39oX4Q~CSOz@FN)49y6yn1JMLML*2 z-w179SbFJXiCWkG_Q8~@RI^3Pv2L8QqW1Q1hz%`X5cz`jA5~ZiQs^lWks81L*ln7B zuGL=?qKrm&D|mPQus!u$c>UAfIO*NG#Ty9#Ff4NbhaITw}-!Dw@+>^(Y6I9 zIb2V^#b<8;FcZ&byN8Z{qskh^_|TR!Kri^U=#U2$_O<_y4pgJ4{`|(rn`+dqV%M11 z$1$OjNX$o0&K#VLJK#rIW+sbzdSr)9)eY#a!>@ah%b{%aLlJ)M+sXF=K+_Om6jpaZ zmFS@6SKart46dM9hTR&|SoaBvxt3qiGbc!j*8$&xU*wTY76=AlI%AUAc$Yi4r`Bfi2eyq69!W@aL zz7V<0({w+?`0W#9|4NnMsY*|rX6DWn+7!Nkpwn2wV4doEs9*cm>>;Y-vFlb};XWsL z+E|Kf>%riZ-vI`Mo7vj7}aBe55X4R&#AI!Bj;v&NEoVy1f+LnRsosg6A zjPZ#LxzlTFW8j9eSNyP6IMNvVB$o2tu-=vAQX?OmG8Jtf5EizrbURCeW2hKO+31~2 zm@1nPb>_~x&^}Q1sAhG-cJgGvW9_6&_Zj&l{wCI|a{`UC`czpshjm^)fw1^fo(Xwp zc=xU}XT03d$81YOK8t^O!mX-beh$YFHP**NZ$8YFC{yI1aL9%- zM|~-7AWsL;eAbLsTKH=#%hLYv&!O>kk9f{hHyFHq`l{=@S(6vvT!G%_$>~M~1vL7{ zotjk@uDsNMCq3zWN{Na*0?Np&wWJKEjnwG5pcuE4T^w=kJ4*%LM}g#2bf@P`m+3-c>AKUev{J!96!v}IZx(OcPW`m8boN462 zVx+ojy~tBxL(_@;-o4q-y$1=OIHO}ey6wbJBo=8SWiH@v8yIPFZ%wOWBO7b!X1$>A zt~74dX*#*%siTlGX!3Dqr1wpbqK7%hwGXa%k+qw*qhjvUUTrhhJ#A__O9NW(JT98k znqHCdz;E4DOEl!TvV7^SziVKXN5CkvIyf&w&~*vbdY6&+@z&4SgbztD{-c?YnL~m{a5?U{Bs=8n)KI!SVn0S^KKb@_%{rh@7HT5)FbR-8%Tl7-BnCCgW_yA3J z##bVhl$DRR_QMVu0XLM&YB|zIpyFPLYBg-G!5zv@Q`(CWX%+ddnYKVfQ=+g`Jiu^q zy<&EtR-w|CO5Qv6AM)b+|!)-!You_q-5a+{qAch8AI zeLx+aZR4-q_PZ%vGuPy~hqKy#&2iv-D08r^kJ;IL)%VHL=#B4p^>?-R9IBuC$v*XM z0Y=T+lz)7&Oj0S<&k?M(v6G5Th)&Qp%C)b~e(fd#5cVYq&MF9siRnY2T#r)16BGjK zeK5wMr~RO2+apgs-4ee+oh23%xiILMlWbXIa)Ro0!iAnHKAw6^Gm4A77DK5*)s}dJfQhyz=A4PxA?% z&zfwF_g5Pw86)xvawJsftu3O_^bQ;6C2LgD2t_;22a*|Y&tI#92P9xW6_Qxm8bis( zOHgBG>%rtvvHNU@FJBESotcZ}^tZwRX+A{;dH34{(C?g;{J-M5IU^&7X$OSr?_`J^ zWFT`2CQ^CRkD}v^qfTY`k3SNiV>W*Mu~lMduE3Hc0W~o_{aGiabfu8AcC@&-7}NMw znKGTL=*YcHmg#jS+hen*c1;>{R^*bS00An>*XrF@wdR{8TTa@Y5Oca<6ImU)To^j9 zv}Zd9J9{cp3OXm#H>?4gMNd*V+L~o4_GpyOLN3Nwa<0>M>O)E=4#W*}Tj{Ifp#wLk1xE%eh zvSHCx)Lm@)qouU7po1NEPR6w%0pesz;rAM*J=59RFa6(onO{bTAD^w}x`$lA+*ToQ zj}wX%xubHuwYlOO7sOMFF8ApVT`H}+d=Sa>_&LE7=@4vfnj-94Ai1mXEs4CE*8Db& zFCf7BfkGtM*MPB9a#vpQ_F|$E07eIDd_;Pd%-oLq@vQ5y?z126RQ=!QZtf)b?3*?` zyDX<__W>CS=s2f}-Cg~DUuO6C*3dup{3#~{|JzZ(zaJMo9@{M5DZhj|Q$WA|>wH}Y LXMn9yw~ziWuLreF diff --git a/html/images/snspistol_part_3.png b/html/images/snspistol_part_3.png deleted file mode 100644 index 53849b523521c74f12083aaadb15feb7a4c5dd5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11065 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 diff --git a/html/images/split_end_muzzle_brake.png b/html/images/split_end_muzzle_brake.png new file mode 100644 index 0000000000000000000000000000000000000000..60902ae455df38643145411a93fc1931d6d4f043 GIT binary patch literal 8712 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 SWxDtV08O>W$SM`9(EkH&&rSFM literal 0 HcmV?d00001 diff --git a/html/images/squared_muzzle_brake.png b/html/images/squared_muzzle_brake.png new file mode 100644 index 0000000000000000000000000000000000000000..3b6ca732adcd8600f27035aa5fa049e8cae1d0b9 GIT binary patch literal 7424 zcma)hcTiJb(01qn0)!&HBuJHF=)L#Qqx2e@U}yqTgh(+25CKuT2qINFQv89^dlLi+ zA|Oo!qzi-^c=P`G{qcSC-8*M@?w;A1opW}cXLoOsg_!{z4JQo%0H8B6)I|`r$Nw%M zB~b>hX5J?%@&{U`S^z*p8toO5g7^(_H$<2M08fMffEWw_a6vT1Yytp}VF18iR{%gc z2LNCT%x|+)C2ml<85`&VZvOXu*IxdbXrT@?v*NsSESurbd`72+s+Rz;A^ z7Su23pa1tx-)`Z-o~rZ0$+y-Q!MDRre~?pB)H*t9_JQY&da~jL+5=`BB+9>@ckH)E z=U4vS8(Mf!`>7F0_;);QRNi)xe|p-!zrSck_V~M{0nh)R7-XbZ{>}yf*rU7;UL?~< zj)GS$Tz+Z|LIp9oMHyI*po4?`=(NkdR<_H~{hsG*HmMv?Z#otSFYT20@F!4Hnlg;x$UxI2v?M7A7 z=}V9b1M8Gth0OBmcH`$D#mj(MMGTKtDhm@0-qo}FgS6fcK0n8 z$Ch*FQ$qV&9v&_m-sme_xN7b7@!8tu)>bTn28-l=_?ZXBEvs!S)3O_WOB?Jw-%7jD z5h-Wy;J{Ybxp%>kx)GH9U+ENSsccTJ+JuAcoh)?~dHD|fPn5<{G9HgN6@J?kwB3G+ z-!kBhARoKJ(jlp?YI8Vxi;KNSJPsOF{0Gs`S(bJ1gwUmIE$IcXHR4JFkB2qwbXk{pOgv$L_+2l^jkdr3l-|tRtpM# z?cNPo!d~v(cGn-#x71845Dv7htbi2oH7gZ z9oHkBF}b-M79$B6mHL#kju;YPPFYeoKV95AEVhrK_WVpE%6}W5eT81UtVeHK@60u_ z&G|B$X%IpjgN94l`S=X(WGcHQxHk^^CJHX6h#yGp7p?8=ZS|&5^xl zo11o?vne8ib|?zXXNHB7@k$!{3QLa_Le*|$?dN~yeLmg! zT$^#%*;+C?uL>xcRq+UtQ;JDLMNR6EF2Qa=I}eXu zgKc&E9YDP}?fAHax1V3EPaX_Z%oOkkmmveL5;6Hi2k|pC?GpcQ#w0lpNNgk*w zgr@GFTf!QVU=y7#aEvD>`*@1m{;zg+F0N^rKo6o z^!)j(#kvfcrT}-W-+c1{Vup?Jei9(@)ZC}41OVE~)^e4~<7!<^c4?DZiR?H)N4GkN z^Q>hp8oET^?Af@W*9+ne_|P^&(+7VG+UvH^mu-)F*#i1B&;&k)*1<7RsDCTSOR>x+ zz8Pl$f7S(|`B*tTEc*K>!cY|DaX;njm|-cxw%(P*q_<*=2Hdn!ngQ-{9sOvL(j;R< z>Ŵ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 literal 0 HcmV?d00001 diff --git a/html/images/pistol_suppressor.png b/html/images/suppressor_attachment.png similarity index 100% rename from html/images/pistol_suppressor.png rename to html/images/suppressor_attachment.png diff --git a/html/images/tactical_muzzle_brake.png b/html/images/tactical_muzzle_brake.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec032066ae1daa2245ea4d29aea1b2122250f07 GIT binary patch literal 7722 zcma)BcQhQpw-zBpi4ub7C9D#?_qJ+?6(KfCqW4}_kFt6RS%k2`Dp8gwtFIC@M2i}| zcNVMH=Xc&;?~nJ+n>lyBnLFpsoH=LCojdo7(bH8YC3;STgM&k=siCTWk5>N?!bkV5 z+j6SGJ>c0Y=_ujgR3;H$f5g8Zvsh~A>)_z{bK>B9ion6SyjOkN#KG|v#KGDAfP*9b z6$gjLEvpeEdq45WLR(!G=k7l>2VL~#Uh~*Z!`KrC=SjzZoXZUSL7OuY%lGoE*UJK0VF11w6$Uq-SW~ zD3R;n*4vd?Bf>_LQX~)0$d&O9(%%~sbOy)H*xsGaFQA8@4<0@up%whl_UZrbG4`-w8MflKe5$L%X7-JSt( zAosx7wuq478!Ec)&gjiiG=CAPch$l$!RsQCB>gl-viT&j7z0OCj26n@M!)!#fkT3Z zDoE(@j<^%bwrs}AnF?zjyp|5xZ@A&(zH(xEWQ zoV^=pDrE9MUt-S8$Ouw72xb%Zubpwkc>Iu=EdMGSIAb1itJBBnFpxp-^F5@!HmcUO zb$Kb3x3CbHe^&hZhI<3<%io_~VF9tDMQT?(W@TZ!bE-ps@iA=2_u0SZWbarh`wFg5 zxcRLRIAEEiaErwf$EEvW*fGRU7-j#!(O2%h%aI~RLub-)yy+F-j^S?e_cu(mwmztfK@I*RidU^?{JKlevI#UoTd$w z8CUZdlv2l|>=2!_+6+CN?#sNIReDH6G6UXm(*&E9T(xSyyQ4K;CNtml$gSI+XKX30 zhY7CBH<&x>L4~_O99*Wuu+8*BcimW}*gy(rhiF3P+i~;yC3w^R?Yq)(`KQUl45rxVcwB}WDQ7ooGh|d;T*YZ&&9lc&MP#1Do`HpX>`1k;Vo9)b zvJQ7Z)|QU^2wC~f<+DFiy^#^Pmx)pjSsZYc`ss3Gyfa7x)3RxsS$$ebja0-5wxVsE*y&;;9 zT4CnV`dFh@EbLg-oreV4C%i=CI#YM6(prwFr6+NR|9y^JX$ciguB4^cgsB>&5V@Ne zLv}}c8W(O)pJ3!hPyDgTjcjyHl8Z$3$$4R&*%8*@? z5_Xw5nf2shw%*5gRHiO>v*t%_bLNbf!&e~}dvh+*+u_8Zzl*&imVC7VPSUoFYWhqw z?#w{=L;VSATu3`LP$3l`sVy)J&PCwub8Mu8P(865UqL^EHq`bazlEV&688RX zjR4acF6-p*`U6U<=GMX>woKZFc_)(O(Mw06^Gl6O3L5QDg+IE=563Gi-HRqc-c?O?|IPEuTIumEPNZMFIVxSd^Yj6ACb_cZo7M z8O}STY$Jg2(-h6t5Or#2(Ad#Sqgjk8a1wm+=lx)`s#`c~7BWVQ;pBwmcm>eU0VZy1 z?)JcZ>O3t3HxdLhEAWckJ|X;j#xWOSMi>8<)-gQ6G7rF7`&Madx@CiGB2njc#gmpP z7eud4yui>G$;_6uH{TmE3U{+Z!4?)4%i4QT=yeS}9uZT(s#2{fWDCqZD`=-om~Z?5 zfEUX4a7QVE9M28#!mdCIbMPq|Pt=YVs8N|*0FY%RJ6}9(M}&Q-QRZNw!~v4G;{%Jb zmjdrlHzehtY6B9tp2_SySjlL-aH9x>+qshuRG5Xk> z4|ovTV@=>%0WIAlwbt#z>%u&(^=@ET;FDu z_&&WR#Q`fhRX&;_Oj)%LCQOjvEfF66SNAn&}P=$NEgv@AljLctG*`xJtRGuBS1cbeas7HKb^lDA|7ZWlhSC!fNr6_g`&V z#LluGnr$OlqJIRt&=B72y;Y4)d9H~J)qP$w8s>mhLP$lR3I=UzI3WbMe#w;qXVn## z!vqTFh2~c%^E(k1Nu#WskSxV;EdzUPdZR|pay)t?A&`NYEoHQY3Y9u7V~mhcx2kp? zYhK^;yxCT2<9+U(ir_bW1cAvbSdzK3n%fe#?$0()lnCWN)TD64Xr_E!>reM=2hKny zn?l&)NyI?bJbGGUH-E}!yDyF5ZTh)j*C&-0Ct$T6E<16@_$1Odnrtz-#oR63B`ZnYIb$lUr~gE@F5OM#L2+x++En_oD>#UlN(&iKqL!#=GqwyR9u4K3W9cP%vD z-L~HB2!x!7`bE?7&-w_Z=2zJ+v^*rpChO2Fh!o4@!+!cTZ8EA>H#51itXbV*nT%rz&pYa+Pe$_ zIR;l=Yz}fsj-1{-j)_Y*@p$}A+(q(WYB2k($hfg!#7@81Kw}h0w4sQH|f^qS-`YYviAI4rt{{rn&s-l)H*0vH|9Qa)g+8HRsj6*y}BvIqNR zz3?3{sokR8#rxt}0@v`KH!D^A>-apKEl{+DO*s%{wq2G2)rq3vpkt3TGj@(R%5N}CZ3;M2yzlxw^R(P zA(yb>cen7Z2w9Fj{-gPjJG1S9ZbmE?*;MmmXR<8Q z;_f!wONOzEujrrC@J>NHK1D7L@^Rm39jCe?MWEmF7V{j|f?>NABF>U!(?^3KDtuPL zn_fji)_3opxl*>RaRcGGiMD!y8?n?%xYmLoZS)hRi{W%DlLZLNw4UV0kBz{(^iyUd z+Pw^umaOC@);xfc<3Mgl)Lwfy!LLFc`i3)jfNuR0socN9S`H?@a|zdD0rPU6>(e43 zAzqNx-f5AEzSUKL@q}f$n7V!?M=BnDS9>Q&Z^9xkf0r_o(AmikrL90lWSzSa7@EK* z9uvd!)+=@p@2{k}YuQY^cGcHD}PYVtELmf0yCh+PsKsfJUKDp3T zRTakn;$|Z7TSmr3)#bA^JbT4WpEou(Hj-YO<;}5`hwi`h1(v*M zRk^$V?26XS9?{Gm*D^N*1qQCxMMXtT+q%y2rA{6E3Vmqhr&Mi>(AOER1ioi<$`7yQ zeCMc41zdRgNafC9Y_m59K_p!gR!ap%^oksnMe%yT01hY~O-f7laPbmXLMXVz+d#n# zk5z+vMnJAeHM|NU3dP39Cq|5nxF7Kq0ffs?wDhSCRf=ggy8$i=z~mLQZE&y!+eMt_L_RCOArk5>p8@KD1v2ybGwiam~0Rl_ED>?}vRarOBP;7dVD zgm4@ZQc@w=zgCcXrGgZOyMS?53vOipJBmL4eAuQ~SbN-ya&cO^><=FQgeTyY&mBe4 zKJ?TKYJpOpN5~Y|ewmbZEiYUAV^I-WaHz&K+|b-#&^rFhRW5mV|LQW22c&~i^XHfS zerEx<9oGTDM?uUNe+EKo5EgqfNAY`2XS+=1ErC*RO7CBOQ9t+zv>vx0!lqi6iZ0eA zF&dA80u$s075IXS45!I=D!LTD@qR!`_h&%KEgC}cSd#3V90vObXJL>JjBr533bC;QvMiai$^h{2$)YK4;3Ck!v()!{1<-muV&|V0d6>9rl-KBRe9vOMq>6w&9Ch zlkb~S&R6kc!_vRFjbfeWp9X>qH^8h)iDU+y?z0O%U`gi9Q-4)Mimo+5sBd|QPwqmi zv2rgqi?2V1ZIq6V?r!?u`=N_-9SQWwV0!B{b@n?Tlt{L*LP#D&ArYKZol{X6HglMppqqvivi_OtpX(~BjZ*VIguV4P3$s+G)$kW zyzH$g5AB<6Re2b`FHTwIyHb0B+Wudzf%Rj>VeJ9tTI^(zv)sP zMmaUb?o%^Mo5_~4*j=-Dlw>+Zb5SoNWgj$Yg$TS=g=0Y8BQ)+njgbSHeC7}WX9&N1 zLf*-$UyDn~)R~_2^g!}R76Eo7H_;XF#=~rS_j@%7iK-UO5ChF%nZ^nN8Y$7KrD@eR zdk&G$btJ@4M=jeCeh>{~n*I>i)iAO@2v=txURR`+hfT>xXHY@2&HZ zbwBQ3fE=Xx-kp;z$V-USAxBNmbGM-Xb||VF=NbO)On#@!%hwX|xco4q+GA~R{8eKurWc(c)lKg! zd^FciVXp8jM`FpUag*pz{V|@$?`z>ev{{eeYe$y}23g2r*%dRS_Z72@VSHjjHtf+j zcXmPZ9bBB0JWvp&H6<87`_KnuEl*kRpXdW^xv z0r(l(aN&X5MT|hOlO&1jfvfAMY=U#4;*aR*a6?^+RFVTyv{FYZE30TmT~A_R9Z$)% zEH(d?CI`RL7>$=KUJM`JIk769catC9vWcFUlI))Tnw$G5K`q;*LcJnA#iqf|c_-WD ztd?4{0- z9zR#GH*ZGQ31UYwI)>ynu@}&{rQKh@(xz#>V2kbhRb^OOY0*WL*Gs8P$Lx>h_k*7~ zk}AdD%3#~98%+|+z^e9o+mP{>Ft*KQ$AuP}&66tq zKBF~2$=O;&Z0*`?#o3x1Z^`aBWixp*hHNMGuU6K(S5#kU5_6X*);DOj{?vT(_#;M6 zeki(4no=L@8LCm-GS5lt_}#d{qDvlmqS@5HQ=?1Mx<^pHe6ZBmET+!af01MnlMnZz~D86vVMTzVbRva~)FZMb$Wp3|&tD{Keg^+~$|i zJ=9E?{*vh^#RL3#sb*dP1MN4xiphSVw*_Cnn_CURve>T16GjOFx|NX1rfXx@EVH{t-9yq+Mx0molEy1HOw@fN6 zaw82~AN@;>;{Nx>k;tl;R+x|G$BRNmLc7EVuk_O?fyfa)+lCs>7z@J+@X6E!()Ol@ zEchTi1RZjBJM4g>rK6MLcJ#R1z_dn5n4f9M2h7OLx{U+*YH5t$IaLRD@tjPWd8$J4QZeEb{b>R#%W<_q*uQZCmlr$b0dtH3%?G$W ziHs|=ob))D_lB&-4E)X$dB!5EgBazXbujWozq{1C-I(j8Y#c#jPZ;Z5inin4} z-}55^R3MUqdI!-9}8dDvwwXX64P2BT6^Cn|hZinRDQR1gfn*$(q52yIv^qXs+eIZf!l^ z-@0Ui2l^-s?aH+kdcS#xtUsOJvojhVICA>f;%T>5l}q4{o}a`v*C8f%25V_(9OrbK zmSSZop|qBL<%khL!PR?hI&-4*bTrMzNcUo_qLn2~Skyr*GBcs-?XHIjJT_rD=v$rB z%~QfX?2rPc$z@;4IB?_f2@@E$Q!%X;(6STzi}`$FCE!W( zQCNbnl^^EKoNTM`4xgEv0!_9NQcS%xp|Hfjv3;5rfvCzZ6PqRk!V%tn)p}MW$q6xR z;nAOMr0n6#K}sn7b~TXgT1jdHFHw!WnD$wUQ18MT*1UoFlLm<~Rb|z`RWSht0-AT5 z$FWyNq9=)6d^cVbn&ufk{*wYV>t@*oyrtU-BR{~-7RV3`xrCq(atT<==}4t_V?em z%8RhIjz&X>c#OW$HlQU>O4uVf#lUE_VH906`MrPKszIHDoGXn(bM|7x^k8W(-SqbN zz_&r^=HQiXDM0HIAU5xf$F;yfh0MA7d7lLHMmfQE4o|6M&@N<|yfpm<#IDG=rDJ4`I03^K7F9@p6nv(d>WmE zs~01Xp9$!G9=rdGziQTZzvZf2of8gUyr6j^BqG<*c(U{3q;>1#`V=Tqy{AQ>=Ukvq zr6oNCn?^rXzh+_ravN>E6&jqbI%#U*Q@ngQTOfEL;9vazq8b02iu}@X_t4frO+8k* zgXEq!ec=Us=VkTL%Uasf!}=a@gaw5~UJ41l6cjNK5|I`bmKG7_6%>>f6zpFUAO0T( d&aPJWHh%xRL1TTQ)4c(XCQw(kT=_%Te*u*&Cc*#! literal 0 HcmV?d00001 diff --git a/html/images/thermalscope_attachment.png b/html/images/thermalscope_attachment.png new file mode 100644 index 0000000000000000000000000000000000000000..8e3e2d7d3a5d67e89c44bc484174c43b407cc7a9 GIT binary patch literal 11784 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 Wch@kD)uICc0000)l@f literal 0 HcmV?d00001 diff --git a/html/js/app.js b/html/js/app.js index 6910f4860..04f533d7e 100644 --- a/html/js/app.js +++ b/html/js/app.js @@ -12,7 +12,7 @@ var disableRightMouse = false; var selectedItem = null; var IsDragging = false; -$(document).on("keydown", function() { +$(document).on("keydown", function () { if (event.repeat) { return; } @@ -29,7 +29,7 @@ $(document).on("keydown", function() { } }); -$(document).on("dblclick", ".item-slot", function(e) { +$(document).on("dblclick", ".item-slot", function (e) { var ItemData = $(this).data("item"); var ItemInventory = $(this).parent().attr("data-inventory"); if (ItemData) { @@ -44,7 +44,7 @@ $(document).on("dblclick", ".item-slot", function(e) { } }); -$(document).on("keyup", function() { +$(document).on("keyup", function () { switch (event.keyCode) { case 17: // TAB ControlPressed = false; @@ -52,7 +52,7 @@ $(document).on("keyup", function() { } }); -$(document).on("mouseenter", ".item-slot", function(e) { +$(document).on("mouseenter", ".item-slot", function (e) { e.preventDefault(); if ($(this).data("item") != null) { $(".ply-iteminfo-container").fadeIn(150); @@ -64,7 +64,7 @@ $(document).on("mouseenter", ".item-slot", function(e) { function GetFirstFreeSlot($toInv, $fromSlot) { var retval = null; - $.each($toInv.find(".item-slot"), function(i, slot) { + $.each($toInv.find(".item-slot"), function (i, slot) { if ($(slot).data("item") === undefined) { if (retval === null) { retval = i + 1; @@ -83,7 +83,7 @@ function CanQuickMove() { return retval; } -$(document).on("mousedown", ".item-slot", function(event) { +$(document).on("mousedown", ".item-slot", function (event) { switch (event.which) { case 3: fromSlot = $(this).attr("data-slot"); @@ -111,15 +111,7 @@ $(document).on("mousedown", ".item-slot", function(event) { return; } if (toAmount >= 0) { - if ( - updateweights( - fromSlot, - toSlot, - fromInventory, - toInventory, - toAmount - ) - ) { + if (updateweights(fromSlot, toSlot, fromInventory, toInventory, toAmount)) { swap(fromSlot, toSlot, fromInventory, toInventory, toAmount); } } @@ -130,7 +122,7 @@ $(document).on("mousedown", ".item-slot", function(event) { } }); -$(document).on("click", ".item-slot", function(e) { +$(document).on("click", ".item-slot", function (e) { e.preventDefault(); var ItemData = $(this).data("item"); @@ -138,13 +130,11 @@ $(document).on("click", ".item-slot", function(e) { if (ItemData.name !== undefined) { if (ItemData.name.split("_")[0] == "weapon") { if (!$("#weapon-attachments").length) { - $(".inv-options-list").append( - '

' - ); + $(".inv-options-list").append('

ATTACHMENTS

'); $("#weapon-attachments").hide().fadeIn(250); ClickedItemData = ItemData; } else if (ClickedItemData == ItemData) { - $("#weapon-attachments").fadeOut(250, function() { + $("#weapon-attachments").fadeOut(250, function () { $("#weapon-attachments").remove(); }); ClickedItemData = {}; @@ -154,7 +144,7 @@ $(document).on("click", ".item-slot", function(e) { } else { ClickedItemData = {}; if ($("#weapon-attachments").length) { - $("#weapon-attachments").fadeOut(250, function() { + $("#weapon-attachments").fadeOut(250, function () { $("#weapon-attachments").remove(); }); } @@ -162,7 +152,7 @@ $(document).on("click", ".item-slot", function(e) { } else { ClickedItemData = {}; if ($("#weapon-attachments").length) { - $("#weapon-attachments").fadeOut(250, function() { + $("#weapon-attachments").fadeOut(250, function () { $("#weapon-attachments").remove(); }); } @@ -170,31 +160,33 @@ $(document).on("click", ".item-slot", function(e) { } else { ClickedItemData = {}; if ($("#weapon-attachments").length) { - $("#weapon-attachments").fadeOut(250, function() { + $("#weapon-attachments").fadeOut(250, function () { $("#weapon-attachments").remove(); }); } } }); -$(document).on("click", "#inv-close", function(e) { +$(document).on("click", "#inv-close", function (e) { e.preventDefault(); Inventory.Close(); }); -$(document).on("click", ".weapon-attachments-back", function(e) { +$(document).on("click", ".weapon-attachments-back", function (e) { e.preventDefault(); $("#qbcore-inventory").css({ display: "block" }); - $("#qbcore-inventory").animate({ + $("#qbcore-inventory").animate( + { left: 0 + "vw", }, 200 ); - $(".weapon-attachments-container").animate({ + $(".weapon-attachments-container").animate( + { left: -100 + "vw", }, 200, - function() { + function () { $(".weapon-attachments-container").css({ display: "none" }); } ); @@ -208,7 +200,7 @@ function FormatAttachmentInfo(data) { weapon: data.name, ItemData: ClickedItemData, }), - function(data) { + function (data) { var AmmoLabel = "9mm"; var Durability = 100; if (data.WeaponData.ammotype == "AMMO_RIFLE") { @@ -220,60 +212,29 @@ function FormatAttachmentInfo(data) { Durability = ClickedItemData.info.quality; } - $(".weapon-attachments-container-title").html( - data.WeaponData.label + " | " + AmmoLabel - ); - $(".weapon-attachments-container-description").html( - data.WeaponData.description - ); - $(".weapon-attachments-container-details").html( - 'Serial Number
' + - ClickedItemData.info.serie + - '

Durability - ' + - Durability.toFixed() + - '%
' - ); + $(".weapon-attachments-container-title").html(data.WeaponData.label + " | " + AmmoLabel); + $(".weapon-attachments-container-description").html(data.WeaponData.description); + $(".weapon-attachments-container-details").html('Serial Number
' + ClickedItemData.info.serie + '

Durability - ' + Durability.toFixed() + '%
'); $(".weapon-attachments-container-detail-durability-total").css({ width: Durability + "%", }); - $(".weapon-attachments-container-image").attr( - "src", - "./attachment_images/" + data.WeaponData.name + ".png" - ); + $(".weapon-attachments-container-image").attr("src", "./attachment_images/" + data.WeaponData.name + ".png"); $(".weapon-attachments").html(""); if (data.AttachmentData !== null && data.AttachmentData !== undefined) { if (data.AttachmentData.length > 0) { - $(".weapon-attachments-title").html( - 'Attachments' - ); - $.each(data.AttachmentData, function(i, attachment) { - var WeaponType = data.WeaponData.ammotype - .split("_")[1] - .toLowerCase(); - $(".weapon-attachments").append( - '

' + - attachment.label + - '

' - ); + $(".weapon-attachments-title").html('Attachments'); + $.each(data.AttachmentData, function (i, attachment) { + var WeaponType = data.WeaponData.ammotype.split("_")[1].toLowerCase(); + $(".weapon-attachments").append('

' + attachment.label + '

'); attachment.id = i; $("#weapon-attachment-" + i).data("AttachmentData", attachment); }); } else { - $(".weapon-attachments-title").html( - 'This gun doesn\'t contain attachments' - ); + $(".weapon-attachments-title").html('This gun doesn\'t contain attachments'); } } else { - $(".weapon-attachments-title").html( - 'This gun doesn\'t contain attachments' - ); + $(".weapon-attachments-title").html('This gun doesn\'t contain attachments'); } handleAttachmentDrag(); @@ -290,60 +251,47 @@ function handleAttachmentDrag() { scroll: true, revertDuration: 0, revert: "invalid", - start: function(event, ui) { + start: function (event, ui) { var ItemData = $(this).data("AttachmentData"); $(this).addClass("weapon-dragging-class"); AttachmentDraggingData = ItemData; }, - stop: function() { + stop: function () { $(this).removeClass("weapon-dragging-class"); }, }); $(".weapon-attachments-remove").droppable({ accept: ".weapon-attachment", hoverClass: "weapon-attachments-remove-hover", - drop: function(event, ui) { + drop: function (event, ui) { $.post( "https://qb-inventory/RemoveAttachment", JSON.stringify({ AttachmentData: AttachmentDraggingData, WeaponData: ClickedItemData, }), - function(data) { + function (data) { if (data.Attachments !== null && data.Attachments !== undefined) { if (data.Attachments.length > 0) { - $("#weapon-attachment-" + AttachmentDraggingData.id).fadeOut( - 150, - function() { - $("#weapon-attachment-" + AttachmentDraggingData.id).remove(); - AttachmentDraggingData = null; - } - ); + $("#weapon-attachment-" + AttachmentDraggingData.id).fadeOut(150, function () { + $("#weapon-attachment-" + AttachmentDraggingData.id).remove(); + AttachmentDraggingData = null; + }); } else { - $("#weapon-attachment-" + AttachmentDraggingData.id).fadeOut( - 150, - function() { - $("#weapon-attachment-" + AttachmentDraggingData.id).remove(); - AttachmentDraggingData = null; - $(".weapon-attachments").html(""); - } - ); - $(".weapon-attachments-title").html( - 'This gun doesn\'t contain attachments' - ); - } - } else { - $("#weapon-attachment-" + AttachmentDraggingData.id).fadeOut( - 150, - function() { + $("#weapon-attachment-" + AttachmentDraggingData.id).fadeOut(150, function () { $("#weapon-attachment-" + AttachmentDraggingData.id).remove(); AttachmentDraggingData = null; $(".weapon-attachments").html(""); - } - ); - $(".weapon-attachments-title").html( - 'This gun doesn\'t contain attachments' - ); + }); + $(".weapon-attachments-title").html('This gun doesn\'t contain attachments'); + } + } else { + $("#weapon-attachment-" + AttachmentDraggingData.id).fadeOut(150, function () { + $("#weapon-attachment-" + AttachmentDraggingData.id).remove(); + AttachmentDraggingData = null; + $(".weapon-attachments").html(""); + }); + $(".weapon-attachments-title").html('This gun doesn\'t contain attachments'); } } ); @@ -351,19 +299,21 @@ function handleAttachmentDrag() { }); } -$(document).on("click", "#weapon-attachments", function(e) { +$(document).on("click", "#weapon-attachments", function (e) { e.preventDefault(); if (!Inventory.IsWeaponBlocked(ClickedItemData.name)) { $(".weapon-attachments-container").css({ display: "block" }); - $("#qbcore-inventory").animate({ + $("#qbcore-inventory").animate( + { left: 100 + "vw", }, 200, - function() { + function () { $("#qbcore-inventory").css({ display: "none" }); } ); - $(".weapon-attachments-container").animate({ + $(".weapon-attachments-container").animate( + { left: 0 + "vw", }, 200 @@ -389,63 +339,19 @@ function FormatItemInfo(itemData) { gender = "Woman"; } $(".item-info-title").html("

" + itemData.label + "

"); - $(".item-info-description").html( - "

CSN: " + - itemData.info.citizenid + - "

First Name: " + - itemData.info.firstname + - "

Last Name: " + - itemData.info.lastname + - "

Birth Date: " + - itemData.info.birthdate + - "

Gender: " + - gender + - "

Nationality: " + - itemData.info.nationality + - "

" - ); + $(".item-info-description").html("

CSN: " + itemData.info.citizenid + "

First Name: " + itemData.info.firstname + "

Last Name: " + itemData.info.lastname + "

Birth Date: " + itemData.info.birthdate + "

Gender: " + gender + "

Nationality: " + itemData.info.nationality + "

"); } else if (itemData.name == "driver_license") { $(".item-info-title").html("

" + itemData.label + "

"); - $(".item-info-description").html( - "

First Name: " + - itemData.info.firstname + - "

Last Name: " + - itemData.info.lastname + - "

Birth Date: " + - itemData.info.birthdate + - "

Licenses: " + - itemData.info.type + - "

" - ); + $(".item-info-description").html("

First Name: " + itemData.info.firstname + "

Last Name: " + itemData.info.lastname + "

Birth Date: " + itemData.info.birthdate + "

Licenses: " + itemData.info.type + "

"); } else if (itemData.name == "weaponlicense") { $(".item-info-title").html("

" + itemData.label + "

"); - $(".item-info-description").html( - "

First Name: " + - itemData.info.firstname + - "

Last Name: " + - itemData.info.lastname + - "

Birth Date: " + - itemData.info.birthdate + - "

" - ); + $(".item-info-description").html("

First Name: " + itemData.info.firstname + "

Last Name: " + itemData.info.lastname + "

Birth Date: " + itemData.info.birthdate + "

"); } else if (itemData.name == "lawyerpass") { $(".item-info-title").html("

" + itemData.label + "

"); - $(".item-info-description").html( - "

Pass-ID: " + - itemData.info.id + - "

First Name: " + - itemData.info.firstname + - "

Last Name: " + - itemData.info.lastname + - "

CSN: " + - itemData.info.citizenid + - "

" - ); + $(".item-info-description").html("

Pass-ID: " + itemData.info.id + "

First Name: " + itemData.info.firstname + "

Last Name: " + itemData.info.lastname + "

CSN: " + itemData.info.citizenid + "

"); } else if (itemData.name == "harness") { $(".item-info-title").html("

" + itemData.label + "

"); - $(".item-info-description").html( - "

" + itemData.info.uses + " uses left.

" - ); + $(".item-info-description").html("

" + itemData.info.uses + " uses left.

"); } else if (itemData.type == "weapon") { $(".item-info-title").html("

" + itemData.label + "

"); if (itemData.info.ammo == undefined) { @@ -455,92 +361,29 @@ function FormatItemInfo(itemData) { } if (itemData.info.attachments != null) { var attachmentString = ""; - $.each(itemData.info.attachments, function(i, attachment) { + $.each(itemData.info.attachments, function (i, attachment) { if (i == itemData.info.attachments.length - 1) { attachmentString += attachment.label; } else { attachmentString += attachment.label + ", "; } }); - $(".item-info-description").html( - "

Serial Number: " + - itemData.info.serie + - "

Munition: " + - itemData.info.ammo + - "

Attachments: " + - attachmentString + - "

" - ); + $(".item-info-description").html("

Serial Number: " + itemData.info.serie + "

Munition: " + itemData.info.ammo + "

Attachments: " + attachmentString + "

"); } else { - $(".item-info-description").html( - "

Serial Number: " + - itemData.info.serie + - "

Munition: " + - itemData.info.ammo + - "

" + - itemData.description + - "

" - ); + $(".item-info-description").html("

Serial Number: " + itemData.info.serie + "

Munition: " + itemData.info.ammo + "

" + itemData.description + "

"); } } else if (itemData.name == "filled_evidence_bag") { $(".item-info-title").html("

" + itemData.label + "

"); if (itemData.info.type == "casing") { - $(".item-info-description").html( - "

Evidence material: " + - itemData.info.label + - "

Type number: " + - itemData.info.ammotype + - "

Caliber: " + - itemData.info.ammolabel + - "

Serial Number: " + - itemData.info.serie + - "

Crime scene: " + - itemData.info.street + - "


" + - itemData.description + - "

" - ); + $(".item-info-description").html("

Evidence material: " + itemData.info.label + "

Type number: " + itemData.info.ammotype + "

Caliber: " + itemData.info.ammolabel + "

Serial Number: " + itemData.info.serie + "

Crime scene: " + itemData.info.street + "


" + itemData.description + "

"); } else if (itemData.info.type == "blood") { - $(".item-info-description").html( - "

Evidence material: " + - itemData.info.label + - "

Blood type: " + - itemData.info.bloodtype + - "

DNA Code: " + - itemData.info.dnalabel + - "

Crime scene: " + - itemData.info.street + - "


" + - itemData.description + - "

" - ); + $(".item-info-description").html("

Evidence material: " + itemData.info.label + "

Blood type: " + itemData.info.bloodtype + "

DNA Code: " + itemData.info.dnalabel + "

Crime scene: " + itemData.info.street + "


" + itemData.description + "

"); } else if (itemData.info.type == "fingerprint") { - $(".item-info-description").html( - "

Evidence material: " + - itemData.info.label + - "

Fingerprint: " + - itemData.info.fingerprint + - "

Crime Scene: " + - itemData.info.street + - "


" + - itemData.description + - "

" - ); + $(".item-info-description").html("

Evidence material: " + itemData.info.label + "

Fingerprint: " + itemData.info.fingerprint + "

Crime Scene: " + itemData.info.street + "


" + itemData.description + "

"); } else if (itemData.info.type == "dna") { - $(".item-info-description").html( - "

Evidence material: " + - itemData.info.label + - "

DNA Code: " + - itemData.info.dnalabel + - "


" + - itemData.description + - "

" - ); + $(".item-info-description").html("

Evidence material: " + itemData.info.label + "

DNA Code: " + itemData.info.dnalabel + "


" + itemData.description + "

"); } - } else if ( - itemData.info.costs != undefined && - itemData.info.costs != null - ) { + } else if (itemData.info.costs != undefined && itemData.info.costs != null) { $(".item-info-title").html("

" + itemData.label + "

"); $(".item-info-description").html("

" + itemData.info.costs + "

"); } else if (itemData.name == "stickynote") { @@ -548,24 +391,16 @@ function FormatItemInfo(itemData) { $(".item-info-description").html("

" + itemData.info.label + "

"); } else if (itemData.name == "moneybag") { $(".item-info-title").html("

" + itemData.label + "

"); - $(".item-info-description").html( - "

Amount of cash: $" + - itemData.info.cash + - "

" - ); + $(".item-info-description").html("

Amount of cash: $" + itemData.info.cash + "

"); } else if (itemData.name == "markedbills") { $(".item-info-title").html("

" + itemData.label + "

"); - $(".item-info-description").html( - "

Worth: $" + - itemData.info.worth + - "

" - ); + $(".item-info-description").html("

Worth: $" + itemData.info.worth + "

"); } else if (itemData.name == "visa" || itemData.name == "mastercard") { - $(".item-info-title").html('

'+itemData.label+'

') - var str = ""+ itemData.info.cardNumber + ""; + $(".item-info-title").html("

" + itemData.label + "

"); + var str = "" + itemData.info.cardNumber + ""; var res = str.slice(12); var cardNumber = "************" + res; - $(".item-info-description").html('

Card Holder: ' + itemData.info.name + '

Citizen ID: ' + itemData.info.citizenid + '

Card Number: ' + cardNumber + '

'); + $(".item-info-description").html("

Card Holder: " + itemData.info.name + "

Citizen ID: " + itemData.info.citizenid + "

Card Number: " + cardNumber + "

"); } else if (itemData.name == "labkey") { $(".item-info-title").html("

" + itemData.label + "

"); $(".item-info-description").html("

Lab: " + itemData.info.lab + "

"); @@ -587,7 +422,7 @@ function handleDragDrop() { revertDuration: 0, revert: "invalid", cancel: ".item-nodrag", - start: function(event, ui) { + start: function (event, ui) { IsDragging = true; $(this).find("img").css("filter", "brightness(50%)"); $(".item-slot").css("border", "1px solid rgba(255, 255, 255, 0.1)"); @@ -610,12 +445,7 @@ function handleDragDrop() { $(this).find(".item-slot-amount p").html("0 (0.0)"); $(".ui-draggable-dragging") .find(".item-slot-amount p") - .html( - itemData.amount + - " (" + - ((itemData.weight * itemData.amount) / 1000).toFixed(1) + - ")" - ); + .html(itemData.amount + " (" + ((itemData.weight * itemData.amount) / 1000).toFixed(1) + ")"); $(".ui-draggable-dragging").find(".item-slot-key").remove(); if ($(this).parent().attr("data-inventory") == "hotbar") { } @@ -630,12 +460,7 @@ function handleDragDrop() { } else { $(this) .find(".item-slot-amount p") - .html( - itemData.amount + - " (" + - ((itemData.weight * itemData.amount) / 1000).toFixed(1) + - ")" - ); + .html(itemData.amount + " (" + ((itemData.weight * itemData.amount) / 1000).toFixed(1) + ")"); if ($(this).parent().attr("data-inventory") == "hotbar") { } } @@ -654,24 +479,10 @@ function handleDragDrop() { } else { $(this) .find(".item-slot-amount p") - .html( - itemData.amount - - dragAmount + - " (" + - ( - (itemData.weight * (itemData.amount - dragAmount)) / - 1000 - ).toFixed(1) + - ")" - ); + .html(itemData.amount - dragAmount + " (" + ((itemData.weight * (itemData.amount - dragAmount)) / 1000).toFixed(1) + ")"); $(".ui-draggable-dragging") .find(".item-slot-amount p") - .html( - dragAmount + - " (" + - ((itemData.weight * dragAmount) / 1000).toFixed(1) + - ")" - ); + .html(dragAmount + " (" + ((itemData.weight * dragAmount) / 1000).toFixed(1) + ")"); $(".ui-draggable-dragging").find(".item-slot-key").remove(); if ($(this).parent().attr("data-inventory") == "hotbar") { } @@ -682,17 +493,12 @@ function handleDragDrop() { $(".ui-draggable-dragging").find(".item-slot-key").remove(); $(this) .find(".item-slot-amount p") - .html( - itemData.amount + - " (" + - ((itemData.weight * itemData.amount) / 1000).toFixed(1) + - ")" - ); + .html(itemData.amount + " (" + ((itemData.weight * itemData.amount) / 1000).toFixed(1) + ")"); InventoryError($(this).parent(), $(this).attr("data-slot")); } }, - stop: function() { - setTimeout(function() { + stop: function () { + setTimeout(function () { IsDragging = false; }, 300); $(this).css("background", "rgba(0, 0, 0, 0.3)"); @@ -703,8 +509,8 @@ function handleDragDrop() { $(".item-slot").droppable({ hoverClass: "item-slot-hoverClass", - drop: function(event, ui) { - setTimeout(function() { + drop: function (event, ui) { + setTimeout(function () { IsDragging = false; }, 300); fromSlot = ui.draggable.attr("data-slot"); @@ -717,9 +523,7 @@ function handleDragDrop() { return; } if (toAmount >= 0) { - if ( - updateweights(fromSlot, toSlot, fromInventory, toInventory, toAmount) - ) { + if (updateweights(fromSlot, toSlot, fromInventory, toInventory, toAmount)) { swap(fromSlot, toSlot, fromInventory, toInventory, toAmount); } } @@ -728,8 +532,8 @@ function handleDragDrop() { $("#item-use").droppable({ hoverClass: "button-hover", - drop: function(event, ui) { - setTimeout(function() { + drop: function (event, ui) { + setTimeout(function () { IsDragging = false; }, 300); fromData = ui.draggable.data("item"); @@ -751,8 +555,8 @@ function handleDragDrop() { $("#item-drop").droppable({ hoverClass: "item-slot-hoverClass", - drop: function(event, ui) { - setTimeout(function() { + drop: function (event, ui) { + setTimeout(function () { IsDragging = false; }, 300); fromData = ui.draggable.data("item"); @@ -784,145 +588,40 @@ function updateweights($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { } } - if ( - ($fromInv.attr("data-inventory") == "hotbar" && - $toInv.attr("data-inventory") == "player") || - ($fromInv.attr("data-inventory") == "player" && - $toInv.attr("data-inventory") == "hotbar") || - ($fromInv.attr("data-inventory") == "player" && - $toInv.attr("data-inventory") == "player") || - ($fromInv.attr("data-inventory") == "hotbar" && - $toInv.attr("data-inventory") == "hotbar") - ) { + if (($fromInv.attr("data-inventory") == "hotbar" && $toInv.attr("data-inventory") == "player") || ($fromInv.attr("data-inventory") == "player" && $toInv.attr("data-inventory") == "hotbar") || ($fromInv.attr("data-inventory") == "player" && $toInv.attr("data-inventory") == "player") || ($fromInv.attr("data-inventory") == "hotbar" && $toInv.attr("data-inventory") == "hotbar")) { return true; } - if ( - ($fromInv.attr("data-inventory").split("-")[0] == "itemshop" && - $toInv.attr("data-inventory").split("-")[0] == "itemshop") || - ($fromInv.attr("data-inventory") == "crafting" && - $toInv.attr("data-inventory") == "crafting") - ) { + if (($fromInv.attr("data-inventory").split("-")[0] == "itemshop" && $toInv.attr("data-inventory").split("-")[0] == "itemshop") || ($fromInv.attr("data-inventory") == "crafting" && $toInv.attr("data-inventory") == "crafting")) { itemData = $fromInv.find("[data-slot=" + $fromSlot + "]").data("item"); if ($fromInv.attr("data-inventory").split("-")[0] == "itemshop") { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '
' +
-                    itemData.name +
-                    '

(' + - itemData.amount + - ") $" + - itemData.price + - '

' + - itemData.label + - "

" - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('
' + itemData.name + '

(' + itemData.amount + ") $" + itemData.price + '

' + itemData.label + "

"); } else { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '
' +
-                    itemData.name +
-                    '

' + - itemData.amount + - " (" + - ((itemData.weight * itemData.amount) / 1000).toFixed(1) + - ')

' + - itemData.label + - "

" - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('
' + itemData.name + '

' + itemData.amount + " (" + ((itemData.weight * itemData.amount) / 1000).toFixed(1) + ')

' + itemData.label + "

"); } InventoryError($fromInv, $fromSlot); return false; } - if ( - $toAmount == 0 && - ($fromInv.attr("data-inventory").split("-")[0] == "itemshop" || - $fromInv.attr("data-inventory") == "crafting") - ) { + if ($toAmount == 0 && ($fromInv.attr("data-inventory").split("-")[0] == "itemshop" || $fromInv.attr("data-inventory") == "crafting")) { itemData = $fromInv.find("[data-slot=" + $fromSlot + "]").data("item"); if ($fromInv.attr("data-inventory").split("-")[0] == "itemshop") { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '
' +
-                    itemData.name +
-                    '

(' + - itemData.amount + - ") $" + - itemData.price + - '

' + - itemData.label + - "

" - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('
' + itemData.name + '

(' + itemData.amount + ") $" + itemData.price + '

' + itemData.label + "

"); } else { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '
' +
-                    itemData.name +
-                    '

' + - itemData.amount + - " (" + - ((itemData.weight * itemData.amount) / 1000).toFixed(1) + - ')

' + - itemData.label + - "

" - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('
' + itemData.name + '

' + itemData.amount + " (" + ((itemData.weight * itemData.amount) / 1000).toFixed(1) + ')

' + itemData.label + "

"); } InventoryError($fromInv, $fromSlot); return false; } - if ( - $toInv.attr("data-inventory").split("-")[0] == "itemshop" || - $toInv.attr("data-inventory") == "crafting" - ) { + if ($toInv.attr("data-inventory").split("-")[0] == "itemshop" || $toInv.attr("data-inventory") == "crafting") { itemData = $toInv.find("[data-slot=" + $toSlot + "]").data("item"); if ($toInv.attr("data-inventory").split("-")[0] == "itemshop") { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '
' +
-                    itemData.name +
-                    '

(' + - itemData.amount + - ") $" + - itemData.price + - '

' + - itemData.label + - "

" - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('
' + itemData.name + '

(' + itemData.amount + ") $" + itemData.price + '

' + itemData.label + "

"); } else { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '
' +
-                    itemData.name +
-                    '

' + - itemData.amount + - " (" + - ((itemData.weight * itemData.amount) / 1000).toFixed(1) + - ')

' + - itemData.label + - "

" - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('
' + itemData.name + '

' + itemData.amount + " (" + ((itemData.weight * itemData.amount) / 1000).toFixed(1) + ')

' + itemData.label + "

"); } InventoryError($fromInv, $fromSlot); @@ -936,10 +635,7 @@ function updateweights($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { $toAmount = fromData.amount; } if (toData == null || fromData.name == toData.name) { - if ( - $fromInv.attr("data-inventory") == "player" || - $fromInv.attr("data-inventory") == "hotbar" - ) { + if ($fromInv.attr("data-inventory") == "player" || $fromInv.attr("data-inventory") == "hotbar") { totalWeight = totalWeight - fromData.weight * $toAmount; totalWeightOther = totalWeightOther + fromData.weight * $toAmount; } else { @@ -947,10 +643,7 @@ function updateweights($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { totalWeightOther = totalWeightOther - fromData.weight * $toAmount; } } else { - if ( - $fromInv.attr("data-inventory") == "player" || - $fromInv.attr("data-inventory") == "hotbar" - ) { + if ($fromInv.attr("data-inventory") == "player" || $fromInv.attr("data-inventory") == "hotbar") { totalWeight = totalWeight - fromData.weight * $toAmount; totalWeight = totalWeight + toData.weight * toData.amount; @@ -966,25 +659,15 @@ function updateweights($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { } } - if ( - totalWeight > playerMaxWeight || - (totalWeightOther > otherMaxWeight && - $fromInv.attr("data-inventory").split("-")[0] != "itemshop" && - $fromInv.attr("data-inventory") != "crafting") - ) { + if (totalWeight > playerMaxWeight || (totalWeightOther > otherMaxWeight && $fromInv.attr("data-inventory").split("-")[0] != "itemshop" && $fromInv.attr("data-inventory") != "crafting")) { InventoryError($fromInv, $fromSlot); return false; } - $("#player-inv-weight").progressbar({ value: (parseInt(totalWeight)), max: playerMaxWeight }); - if ( - $fromInv.attr("data-inventory").split("-")[0] != "itemshop" && - $toInv.attr("data-inventory").split("-")[0] != "itemshop" && - $fromInv.attr("data-inventory") != "crafting" && - $toInv.attr("data-inventory") != "crafting" - ) { + $("#player-inv-weight").progressbar({ value: parseInt(totalWeight), max: playerMaxWeight }); + if ($fromInv.attr("data-inventory").split("-")[0] != "itemshop" && $toInv.attr("data-inventory").split("-")[0] != "itemshop" && $fromInv.attr("data-inventory") != "crafting" && $toInv.attr("data-inventory") != "crafting") { $("#other-inv-label").html(otherLabel); - $("#other-inv-weight").progressbar({ value: (parseInt(totalWeightOther)), max: otherMaxWeight }); + $("#other-inv-weight").progressbar({ value: parseInt(totalWeightOther), max: otherMaxWeight }); } return true; @@ -992,7 +675,7 @@ function updateweights($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { var combineslotData = null; -$(document).on("click", ".CombineItem", function(e) { +$(document).on("click", ".CombineItem", function (e) { e.preventDefault(); if (combineslotData.toData.combinable.anim != null) { $.post( @@ -1016,30 +699,14 @@ $(document).on("click", ".CombineItem", function(e) { Inventory.Close(); }); -$(document).on("click", ".SwitchItem", function(e) { +$(document).on("click", ".SwitchItem", function (e) { e.preventDefault(); $(".combine-option-container").hide(); - optionSwitch( - combineslotData.fromSlot, - combineslotData.toSlot, - combineslotData.fromInv, - combineslotData.toInv, - combineslotData.toAmount, - combineslotData.toData, - combineslotData.fromData - ); + optionSwitch(combineslotData.fromSlot, combineslotData.toSlot, combineslotData.fromInv, combineslotData.toInv, combineslotData.toAmount, combineslotData.toData, combineslotData.fromData); }); -function optionSwitch( - $fromSlot, - $toSlot, - $fromInv, - $toInv, - $toAmount, - toData, - fromData -) { +function optionSwitch($fromSlot, $toSlot, $fromInv, $toInv, $toAmount, toData, fromData) { fromData.slot = parseInt($toSlot); $toInv.find("[data-slot=" + $toSlot + "]").data("item", fromData); @@ -1048,39 +715,9 @@ function optionSwitch( $toInv.find("[data-slot=" + $toSlot + "]").removeClass("item-nodrag"); if ($toSlot < 6) { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '

' + - $toSlot + - '

' +
-                fromData.name +
-                '

' + - fromData.amount + - " (" + - ((fromData.weight * fromData.amount) / 1000).toFixed(1) + - ')

' + - fromData.label + - "

" - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('

' + $toSlot + '

' + fromData.name + '

' + fromData.amount + " (" + ((fromData.weight * fromData.amount) / 1000).toFixed(1) + ')

' + fromData.label + "

"); } else { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '
' +
-                fromData.name +
-                '

' + - fromData.amount + - " (" + - ((fromData.weight * fromData.amount) / 1000).toFixed(1) + - ')

' + - fromData.label + - "

" - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('
' + fromData.name + '

' + fromData.amount + " (" + ((fromData.weight * fromData.amount) / 1000).toFixed(1) + ')

' + fromData.label + "

"); } toData.slot = parseInt($fromSlot); @@ -1091,39 +728,9 @@ function optionSwitch( $fromInv.find("[data-slot=" + $fromSlot + "]").data("item", toData); if ($fromSlot < 6) { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

' + - $fromSlot + - '

' +
-                toData.name +
-                '

' + - toData.amount + - " (" + - ((toData.weight * toData.amount) / 1000).toFixed(1) + - ')

' + - toData.label + - "

" - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

' + $fromSlot + '

' + toData.name + '

' + toData.amount + " (" + ((toData.weight * toData.amount) / 1000).toFixed(1) + ')

' + toData.label + "

"); } else { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '
' +
-                toData.name +
-                '

' + - toData.amount + - " (" + - ((toData.weight * toData.amount) / 1000).toFixed(1) + - ')

' + - toData.label + - "

" - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('
' + toData.name + '

' + toData.amount + " (" + ((toData.weight * toData.amount) / 1000).toFixed(1) + ')

' + toData.label + "

"); } $.post( @@ -1157,31 +764,18 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { return; } - if ( - ($fromInv.attr("data-inventory") == "player" || - $fromInv.attr("data-inventory") == "hotbar") && - $toInv.attr("data-inventory").split("-")[0] == "itemshop" && - $toInv.attr("data-inventory") == "crafting" - ) { + if (($fromInv.attr("data-inventory") == "player" || $fromInv.attr("data-inventory") == "hotbar") && $toInv.attr("data-inventory").split("-")[0] == "itemshop" && $toInv.attr("data-inventory") == "crafting") { InventoryError($fromInv, $fromSlot); return; } - if ( - $toAmount == 0 && - $fromInv.attr("data-inventory").split("-")[0] == "itemshop" && - $fromInv.attr("data-inventory") == "crafting" - ) { + if ($toAmount == 0 && $fromInv.attr("data-inventory").split("-")[0] == "itemshop" && $fromInv.attr("data-inventory") == "crafting") { InventoryError($fromInv, $fromSlot); return; } else if ($toAmount == 0) { $toAmount = fromData.amount; } - if ( - (toData != undefined || toData != null) && - toData.name == fromData.name && - !fromData.unique - ) { + if ((toData != undefined || toData != null) && toData.name == fromData.name && !fromData.unique) { var newData = []; newData.name = toData.name; newData.label = toData.label; @@ -1201,64 +795,19 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { $toInv.find("[data-slot=" + $toSlot + "]").addClass("item-drag"); $toInv.find("[data-slot=" + $toSlot + "]").removeClass("item-nodrag"); - var ItemLabel = - '

' + newData.label + "

"; + var ItemLabel = '

' + newData.label + "

"; if (newData.name.split("_")[0] == "weapon") { if (!Inventory.IsWeaponBlocked(newData.name)) { - ItemLabel = - '

100

' + - newData.label + - "

"; + ItemLabel = '

100

' + newData.label + "

"; } } if ($toSlot < 6 && $toInv.attr("data-inventory") == "player") { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '

' + - $toSlot + - '

' +
-                            newData.name +
-                            '

' + - newData.amount + - " (" + - ((newData.weight * newData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('

' + $toSlot + '

' + newData.name + '

' + newData.amount + " (" + ((newData.weight * newData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else if ($toSlot == 41 && $toInv.attr("data-inventory") == "player") { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '

6

' +
-                            newData.name +
-                            '

' + - newData.amount + - " (" + - ((newData.weight * newData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('

6

' + newData.name + '

' + newData.amount + " (" + ((newData.weight * newData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '
' +
-                            newData.name +
-                            '

' + - newData.amount + - " (" + - ((newData.weight * newData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('
' + newData.name + '

' + newData.amount + " (" + ((newData.weight * newData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } if (newData.name.split("_")[0] == "weapon") { @@ -1298,11 +847,7 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { $fromInv.find("[data-slot=" + $fromSlot + "]").addClass("item-nodrag"); $fromInv.find("[data-slot=" + $fromSlot + "]").removeData("item"); - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

 

' - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

 

'); } else if (fromData.amount > $toAmount) { var newDataFrom = []; newDataFrom.name = fromData.name; @@ -1323,64 +868,19 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { $toInv.find("[data-slot=" + $toSlot + "]").addClass("item-drag"); $toInv.find("[data-slot=" + $toSlot + "]").removeClass("item-nodrag"); - var ItemLabel = - '

' + newData.label + "

"; + var ItemLabel = '

' + newData.label + "

"; if (newData.name.split("_")[0] == "weapon") { if (!Inventory.IsWeaponBlocked(newData.name)) { - ItemLabel = - '

100

' + - newData.label + - "

"; + ItemLabel = '

100

' + newData.label + "

"; } } if ($toSlot < 6 && $toInv.attr("data-inventory") == "player") { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '

' + - $toSlot + - '

' +
-                            newData.name +
-                            '

' + - newData.amount + - " (" + - ((newData.weight * newData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('

' + $toSlot + '

' + newData.name + '

' + newData.amount + " (" + ((newData.weight * newData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else if ($toSlot == 41 && $toInv.attr("data-inventory") == "player") { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '

6

' +
-                            newData.name +
-                            '

' + - newData.amount + - " (" + - ((newData.weight * newData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('

6

' + newData.name + '

' + newData.amount + " (" + ((newData.weight * newData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '
' +
-                            newData.name +
-                            '

' + - newData.amount + - " (" + - ((newData.weight * newData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('
' + newData.name + '

' + newData.amount + " (" + ((newData.weight * newData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } if (newData.name.split("_")[0] == "weapon") { @@ -1416,101 +916,27 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { } } - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .data("item", newDataFrom); + $fromInv.find("[data-slot=" + $fromSlot + "]").data("item", newDataFrom); $fromInv.find("[data-slot=" + $fromSlot + "]").addClass("item-drag"); - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .removeClass("item-nodrag"); + $fromInv.find("[data-slot=" + $fromSlot + "]").removeClass("item-nodrag"); if ($fromInv.attr("data-inventory").split("-")[0] == "itemshop") { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '
' +
-                            newDataFrom.name +
-                            '

(' + - newDataFrom.amount + - ") $" + - newDataFrom.price + - '

' + - newDataFrom.label + - "

" - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('
' + newDataFrom.name + '

(' + newDataFrom.amount + ") $" + newDataFrom.price + '

' + newDataFrom.label + "

"); } else { - var ItemLabel = - '

' + - newDataFrom.label + - "

"; + var ItemLabel = '

' + newDataFrom.label + "

"; if (newDataFrom.name.split("_")[0] == "weapon") { if (!Inventory.IsWeaponBlocked(newDataFrom.name)) { - ItemLabel = - '

100

' + - newDataFrom.label + - "

"; + ItemLabel = '

100

' + newDataFrom.label + "

"; } } if ($fromSlot < 6 && $fromInv.attr("data-inventory") == "player") { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

' + - $fromSlot + - '

' +
-                                newDataFrom.name +
-                                '

' + - newDataFrom.amount + - " (" + - ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed( - 1 - ) + - ")

" + - ItemLabel - ); - } else if ( - $fromSlot == 41 && - $fromInv.attr("data-inventory") == "player" - ) { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

6

' +
-                                newDataFrom.name +
-                                '

' + - newDataFrom.amount + - " (" + - ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed( - 1 - ) + - ")

" + - ItemLabel - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

' + $fromSlot + '

' + newDataFrom.name + '

' + newDataFrom.amount + " (" + ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed(1) + ")

" + ItemLabel); + } else if ($fromSlot == 41 && $fromInv.attr("data-inventory") == "player") { + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

6

' + newDataFrom.name + '

' + newDataFrom.amount + " (" + ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '
' +
-                                newDataFrom.name +
-                                '

' + - newDataFrom.amount + - " (" + - ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed( - 1 - ) + - ")

" + - ItemLabel - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('
' + newDataFrom.name + '

' + newDataFrom.amount + " (" + ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } if (newDataFrom.name.split("_")[0] == "weapon") { @@ -1521,10 +947,7 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { var QualityColor = "rgb(39, 174, 96)"; if (newDataFrom.info.quality < 25) { QualityColor = "rgb(192, 57, 43)"; - } else if ( - newDataFrom.info.quality > 25 && - newDataFrom.info.quality < 50 - ) { + } else if (newDataFrom.info.quality > 25 && newDataFrom.info.quality < 50) { QualityColor = "rgb(230, 126, 34)"; } else if (newDataFrom.info.quality >= 50) { QualityColor = "rgb(39, 174, 96)"; @@ -1563,26 +986,14 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { ); } else { if (fromData.amount == $toAmount) { - if (toData && toData.unique){ + if (toData && toData.unique) { InventoryError($fromInv, $fromSlot); return; } - if ( - toData != undefined && - toData.combinable != null && - isItemAllowed(fromData.name, toData.combinable.accept) - ) { - $.post( - "https://qb-inventory/getCombineItem", - JSON.stringify({ item: toData.combinable.reward }), - function(item) { - $(".combine-option-text").html( - "

If you combine these items you get: " + - item.label + - "

" - ); - } - ); + if (toData != undefined && toData.combinable != null && isItemAllowed(fromData.name, toData.combinable.accept)) { + $.post("https://qb-inventory/getCombineItem", JSON.stringify({ item: toData.combinable.reward }), function (item) { + $(".combine-option-text").html("

If you combine these items you get: " + item.label + "

"); + }); $(".combine-option-container").fadeIn(100); combineslotData = []; combineslotData.fromData = fromData; @@ -1602,64 +1013,19 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { $toInv.find("[data-slot=" + $toSlot + "]").addClass("item-drag"); $toInv.find("[data-slot=" + $toSlot + "]").removeClass("item-nodrag"); - var ItemLabel = - '

' + fromData.label + "

"; + var ItemLabel = '

' + fromData.label + "

"; if (fromData.name.split("_")[0] == "weapon") { if (!Inventory.IsWeaponBlocked(fromData.name)) { - ItemLabel = - '

100

' + - fromData.label + - "

"; + ItemLabel = '

100

' + fromData.label + "

"; } } if ($toSlot < 6 && $toInv.attr("data-inventory") == "player") { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '

' + - $toSlot + - '

' +
-                            fromData.name +
-                            '

' + - fromData.amount + - " (" + - ((fromData.weight * fromData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('

' + $toSlot + '

' + fromData.name + '

' + fromData.amount + " (" + ((fromData.weight * fromData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else if ($toSlot == 41 && $toInv.attr("data-inventory") == "player") { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '

6

' +
-                            fromData.name +
-                            '

' + - fromData.amount + - " (" + - ((fromData.weight * fromData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('

6

' + fromData.name + '

' + fromData.amount + " (" + ((fromData.weight * fromData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '
' +
-                            fromData.name +
-                            '

' + - fromData.amount + - " (" + - ((fromData.weight * fromData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('
' + fromData.name + '

' + fromData.amount + " (" + ((fromData.weight * fromData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } if (fromData.name.split("_")[0] == "weapon") { @@ -1670,10 +1036,7 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { var QualityColor = "rgb(39, 174, 96)"; if (fromData.info.quality < 25) { QualityColor = "rgb(192, 57, 43)"; - } else if ( - fromData.info.quality > 25 && - fromData.info.quality < 50 - ) { + } else if (fromData.info.quality > 25 && fromData.info.quality < 50) { QualityColor = "rgb(230, 126, 34)"; } else if (fromData.info.quality >= 50) { QualityColor = "rgb(39, 174, 96)"; @@ -1702,73 +1065,23 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { toData.slot = parseInt($fromSlot); $fromInv.find("[data-slot=" + $fromSlot + "]").addClass("item-drag"); - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .removeClass("item-nodrag"); + $fromInv.find("[data-slot=" + $fromSlot + "]").removeClass("item-nodrag"); $fromInv.find("[data-slot=" + $fromSlot + "]").data("item", toData); - var ItemLabel = - '

' + toData.label + "

"; + var ItemLabel = '

' + toData.label + "

"; if (toData.name.split("_")[0] == "weapon") { if (!Inventory.IsWeaponBlocked(toData.name)) { - ItemLabel = - '

100

' + - toData.label + - "

"; + ItemLabel = '

100

' + toData.label + "

"; } } if ($fromSlot < 6 && $fromInv.attr("data-inventory") == "player") { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

' + - $fromSlot + - '

' +
-                                toData.name +
-                                '

' + - toData.amount + - " (" + - ((toData.weight * toData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); - } else if ( - $fromSlot == 41 && - $fromInv.attr("data-inventory") == "player" - ) { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

6

' +
-                                toData.name +
-                                '

' + - toData.amount + - " (" + - ((toData.weight * toData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

' + $fromSlot + '

' + toData.name + '

' + toData.amount + " (" + ((toData.weight * toData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); + } else if ($fromSlot == 41 && $fromInv.attr("data-inventory") == "player") { + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

6

' + toData.name + '

' + toData.amount + " (" + ((toData.weight * toData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '
' +
-                                toData.name +
-                                '

' + - toData.amount + - " (" + - ((toData.weight * toData.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('
' + toData.name + '

' + toData.amount + " (" + ((toData.weight * toData.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } if (toData.name.split("_")[0] == "weapon") { @@ -1816,38 +1129,17 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { }) ); } else { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .removeClass("item-drag"); - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .addClass("item-nodrag"); + $fromInv.find("[data-slot=" + $fromSlot + "]").removeClass("item-drag"); + $fromInv.find("[data-slot=" + $fromSlot + "]").addClass("item-nodrag"); $fromInv.find("[data-slot=" + $fromSlot + "]").removeData("item"); if ($fromSlot < 6 && $fromInv.attr("data-inventory") == "player") { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

' + - $fromSlot + - '

 

' - ); - } else if ( - $fromSlot == 41 && - $fromInv.attr("data-inventory") == "player" - ) { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

6

 

' - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

' + $fromSlot + '

 

'); + } else if ($fromSlot == 41 && $fromInv.attr("data-inventory") == "player") { + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

6

 

'); } else { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

 

' - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

 

'); } $.post( @@ -1862,10 +1154,7 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { ); } $.post("https://qb-inventory/PlayDropSound", JSON.stringify({})); - } else if ( - fromData.amount > $toAmount && - (toData == undefined || toData == null) - ) { + } else if (fromData.amount > $toAmount && (toData == undefined || toData == null)) { var newDataTo = []; newDataTo.name = fromData.name; newDataTo.label = fromData.label; @@ -1884,64 +1173,19 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { $toInv.find("[data-slot=" + $toSlot + "]").addClass("item-drag"); $toInv.find("[data-slot=" + $toSlot + "]").removeClass("item-nodrag"); - var ItemLabel = - '

' + newDataTo.label + "

"; + var ItemLabel = '

' + newDataTo.label + "

"; if (newDataTo.name.split("_")[0] == "weapon") { if (!Inventory.IsWeaponBlocked(newDataTo.name)) { - ItemLabel = - '

100

' + - newDataTo.label + - "

"; + ItemLabel = '

100

' + newDataTo.label + "

"; } } if ($toSlot < 6 && $toInv.attr("data-inventory") == "player") { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '

' + - $toSlot + - '

' +
-                            newDataTo.name +
-                            '

' + - newDataTo.amount + - " (" + - ((newDataTo.weight * newDataTo.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('

' + $toSlot + '

' + newDataTo.name + '

' + newDataTo.amount + " (" + ((newDataTo.weight * newDataTo.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else if ($toSlot == 41 && $toInv.attr("data-inventory") == "player") { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '

6

' +
-                            newDataTo.name +
-                            '

' + - newDataTo.amount + - " (" + - ((newDataTo.weight * newDataTo.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('

6

' + newDataTo.name + '

' + newDataTo.amount + " (" + ((newDataTo.weight * newDataTo.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else { - $toInv - .find("[data-slot=" + $toSlot + "]") - .html( - '
' +
-                            newDataTo.name +
-                            '

' + - newDataTo.amount + - " (" + - ((newDataTo.weight * newDataTo.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + $toInv.find("[data-slot=" + $toSlot + "]").html('
' + newDataTo.name + '

' + newDataTo.amount + " (" + ((newDataTo.weight * newDataTo.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } if (newDataTo.name.split("_")[0] == "weapon") { @@ -1952,10 +1196,7 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { var QualityColor = "rgb(39, 174, 96)"; if (newDataTo.info.quality < 25) { QualityColor = "rgb(192, 57, 43)"; - } else if ( - newDataTo.info.quality > 25 && - newDataTo.info.quality < 50 - ) { + } else if (newDataTo.info.quality > 25 && newDataTo.info.quality < 50) { QualityColor = "rgb(230, 126, 34)"; } else if (newDataTo.info.quality >= 50) { QualityColor = "rgb(39, 174, 96)"; @@ -1994,101 +1235,27 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { newDataFrom.unique = fromData.unique; newDataFrom.slot = parseInt($fromSlot); - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .data("item", newDataFrom); + $fromInv.find("[data-slot=" + $fromSlot + "]").data("item", newDataFrom); $fromInv.find("[data-slot=" + $fromSlot + "]").addClass("item-drag"); - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .removeClass("item-nodrag"); + $fromInv.find("[data-slot=" + $fromSlot + "]").removeClass("item-nodrag"); if ($fromInv.attr("data-inventory").split("-")[0] == "itemshop") { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '
' +
-                            newDataFrom.name +
-                            '

(' + - newDataFrom.amount + - ") $" + - newDataFrom.price + - '

' + - newDataFrom.label + - "

" - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('
' + newDataFrom.name + '

(' + newDataFrom.amount + ") $" + newDataFrom.price + '

' + newDataFrom.label + "

"); } else { - var ItemLabel = - '

' + - newDataFrom.label + - "

"; + var ItemLabel = '

' + newDataFrom.label + "

"; if (newDataFrom.name.split("_")[0] == "weapon") { if (!Inventory.IsWeaponBlocked(newDataFrom.name)) { - ItemLabel = - '

100

' + - newDataFrom.label + - "

"; + ItemLabel = '

100

' + newDataFrom.label + "

"; } } if ($fromSlot < 6 && $fromInv.attr("data-inventory") == "player") { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

' + - $fromSlot + - '

' +
-                                newDataFrom.name +
-                                '

' + - newDataFrom.amount + - " (" + - ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed( - 1 - ) + - ")

" + - ItemLabel - ); - } else if ( - $fromSlot == 41 && - $fromInv.attr("data-inventory") == "player" - ) { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '

6

' +
-                                newDataFrom.name +
-                                '

' + - newDataFrom.amount + - " (" + - ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed( - 1 - ) + - ")

" + - ItemLabel - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

' + $fromSlot + '

' + newDataFrom.name + '

' + newDataFrom.amount + " (" + ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed(1) + ")

" + ItemLabel); + } else if ($fromSlot == 41 && $fromInv.attr("data-inventory") == "player") { + $fromInv.find("[data-slot=" + $fromSlot + "]").html('

6

' + newDataFrom.name + '

' + newDataFrom.amount + " (" + ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else { - $fromInv - .find("[data-slot=" + $fromSlot + "]") - .html( - '
' +
-                                newDataFrom.name +
-                                '

' + - newDataFrom.amount + - " (" + - ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed( - 1 - ) + - ")

" + - ItemLabel - ); + $fromInv.find("[data-slot=" + $fromSlot + "]").html('
' + newDataFrom.name + '

' + newDataFrom.amount + " (" + ((newDataFrom.weight * newDataFrom.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } if (newDataFrom.name.split("_")[0] == "weapon") { @@ -2099,10 +1266,7 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { var QualityColor = "rgb(39, 174, 96)"; if (newDataFrom.info.quality < 25) { QualityColor = "rgb(192, 57, 43)"; - } else if ( - newDataFrom.info.quality > 25 && - newDataFrom.info.quality < 50 - ) { + } else if (newDataFrom.info.quality > 25 && newDataFrom.info.quality < 50) { QualityColor = "rgb(230, 126, 34)"; } else if (newDataFrom.info.quality >= 50) { QualityColor = "rgb(39, 174, 96)"; @@ -2149,7 +1313,7 @@ function swap($fromSlot, $toSlot, $fromInv, $toInv, $toAmount) { function isItemAllowed(item, allowedItems) { var retval = false; - $.each(allowedItems, function(index, i) { + $.each(allowedItems, function (index, i) { if (i == item) { retval = true; } @@ -2162,10 +1326,8 @@ function InventoryError($elinv, $elslot) { .find("[data-slot=" + $elslot + "]") .css("background", "rgba(156, 20, 20, 0.5)") .css("transition", "background 500ms"); - setTimeout(function() { - $elinv - .find("[data-slot=" + $elslot + "]") - .css("background", "rgba(255, 255, 255, 0.3)"); + setTimeout(function () { + $elinv.find("[data-slot=" + $elslot + "]").css("background", "rgba(255, 255, 255, 0.3)"); }, 500); $.post("https://qb-inventory/PlayDropFail", JSON.stringify({})); } @@ -2181,17 +1343,15 @@ var requiredItemOpen = false; Inventory.droplabel = "Drop"; Inventory.dropmaxweight = 100000; - Inventory.Error = function() { + Inventory.Error = function () { $.post("https://qb-inventory/PlayDropFail", JSON.stringify({})); }; - Inventory.IsWeaponBlocked = function(WeaponName) { - var DurabilityBlockedWeapons = [ - "weapon_unarmed", - ]; + Inventory.IsWeaponBlocked = function (WeaponName) { + var DurabilityBlockedWeapons = ["weapon_unarmed"]; var retval = false; - $.each(DurabilityBlockedWeapons, function(i, name) { + $.each(DurabilityBlockedWeapons, function (i, name) { if (name == WeaponName) { retval = true; } @@ -2199,7 +1359,7 @@ var requiredItemOpen = false; return retval; }; - Inventory.QualityCheck = function(item, IsHotbar, IsOtherInventory) { + Inventory.QualityCheck = function (item, IsHotbar, IsOtherInventory) { if (!Inventory.IsWeaponBlocked(item.name)) { if (item.name.split("_")[0] == "weapon") { if (item.info.quality == undefined) { @@ -2292,7 +1452,7 @@ var requiredItemOpen = false; } }; - Inventory.Open = function(data) { + Inventory.Open = function (data) { totalWeight = 0; totalWeightOther = 0; @@ -2311,45 +1471,23 @@ var requiredItemOpen = false; $(".other-inventory").attr("data-inventory", 0); } for (i = 1; i < 6; i++) { - $(".player-inventory").append( - '

' + - i + - '

 

' - ); + $(".player-inventory").append('

' + i + '

 

'); } for (i = 6; i < data.slots + 1; i++) { if (i == 41) { - $(".player-inventory").append( - '

6

 

' - ); + $(".player-inventory").append('

6

 

'); } else { - $(".player-inventory").append( - '

 

' - ); + $(".player-inventory").append('

 

'); } } if (data.other != null && data.other != "") { for (i = 1; i < data.other.slots + 1; i++) { - $(".other-inventory").append( - '

 

' - ); + $(".other-inventory").append('

 

'); } } else { for (i = 1; i < Inventory.dropslots + 1; i++) { - $(".other-inventory").append( - '

 

' - ); + $(".other-inventory").append('

 

'); } $(".other-inventory .item-slot").css({ "background-color": "rgba(0, 0, 0, 0.3)", @@ -2357,17 +1495,13 @@ var requiredItemOpen = false; } if (data.inventory !== null) { - $.each(data.inventory, function(i, item) { + $.each(data.inventory, function (i, item) { if (item != null) { totalWeight += item.weight * item.amount; - var ItemLabel = - '

' + item.label + "

"; + var ItemLabel = '

' + item.label + "

"; if (item.name.split("_")[0] == "weapon") { if (!Inventory.IsWeaponBlocked(item.name)) { - ItemLabel = - '

100

' + - item.label + - "

"; + ItemLabel = '

100

' + item.label + "

"; } } if (item.slot < 6) { @@ -2376,20 +1510,7 @@ var requiredItemOpen = false; .addClass("item-drag"); $(".player-inventory") .find("[data-slot=" + item.slot + "]") - .html( - '

' + - item.slot + - '

' +
-                                item.name +
-                                '

' + - item.amount + - " (" + - ((item.weight * item.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + .html('

' + item.slot + '

' + item.name + '

' + item.amount + " (" + ((item.weight * item.amount) / 1000).toFixed(1) + ")

" + ItemLabel); $(".player-inventory") .find("[data-slot=" + item.slot + "]") .data("item", item); @@ -2399,18 +1520,7 @@ var requiredItemOpen = false; .addClass("item-drag"); $(".player-inventory") .find("[data-slot=" + item.slot + "]") - .html( - '

6

' +
-                                item.name +
-                                '

' + - item.amount + - " (" + - ((item.weight * item.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + .html('

6

' + item.name + '

' + item.amount + " (" + ((item.weight * item.amount) / 1000).toFixed(1) + ")

" + ItemLabel); $(".player-inventory") .find("[data-slot=" + item.slot + "]") .data("item", item); @@ -2420,18 +1530,7 @@ var requiredItemOpen = false; .addClass("item-drag"); $(".player-inventory") .find("[data-slot=" + item.slot + "]") - .html( - '
' +
-                                item.name +
-                                '

' + - item.amount + - " (" + - ((item.weight * item.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + .html('
' + item.name + '

' + item.amount + " (" + ((item.weight * item.amount) / 1000).toFixed(1) + ")

" + ItemLabel); $(".player-inventory") .find("[data-slot=" + item.slot + "]") .data("item", item); @@ -2441,22 +1540,14 @@ var requiredItemOpen = false; }); } - if ( - data.other != null && - data.other != "" && - data.other.inventory != null - ) { - $.each(data.other.inventory, function(i, item) { + if (data.other != null && data.other != "" && data.other.inventory != null) { + $.each(data.other.inventory, function (i, item) { if (item != null) { totalWeightOther += item.weight * item.amount; - var ItemLabel = - '

' + item.label + "

"; + var ItemLabel = '

' + item.label + "

"; if (item.name.split("_")[0] == "weapon") { if (!Inventory.IsWeaponBlocked(item.name)) { - ItemLabel = - '

100

' + - item.label + - "

"; + ItemLabel = '

100

' + item.label + "

"; } } $(".other-inventory") @@ -2465,33 +1556,11 @@ var requiredItemOpen = false; if (item.price != null) { $(".other-inventory") .find("[data-slot=" + item.slot + "]") - .html( - '
' +
-                                item.name +
-                                '

(' + - item.amount + - ") $" + - item.price + - "

" + - ItemLabel - ); + .html('
' + item.name + '

(' + item.amount + ") $" + item.price + "

" + ItemLabel); } else { $(".other-inventory") .find("[data-slot=" + item.slot + "]") - .html( - '
' +
-                                item.name +
-                                '

' + - item.amount + - " (" + - ((item.weight * item.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + .html('
' + item.name + '

' + item.amount + " (" + ((item.weight * item.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } $(".other-inventory") .find("[data-slot=" + item.slot + "]") @@ -2505,10 +1574,7 @@ var requiredItemOpen = false; playerMaxWeight = data.maxweight; if (data.other != null) { var name = data.other.name.toString(); - if ( - name != null && - (name.split("-")[0] == "itemshop" || name == "crafting") - ) { + if (name != null && (name.split("-")[0] == "itemshop" || name == "crafting")) { $("#other-inv-label").html(data.other.label); } else { $("#other-inv-label").html(data.other.label); @@ -2523,14 +1589,14 @@ var requiredItemOpen = false; otherLabel = Inventory.droplabel; } - $.each(data.maxammo, function(index, ammotype) { + $.each(data.maxammo, function (index, ammotype) { $("#" + index + "_ammo") .find(".ammo-box-amount") .css({ height: "0%" }); }); if (data.Ammo !== null) { - $.each(data.Ammo, function(i, amount) { + $.each(data.Ammo, function (i, amount) { var Handler = i.split("_"); var Type = Handler[1].toLowerCase(); if (amount > data.maxammo[Type]) { @@ -2550,7 +1616,7 @@ var requiredItemOpen = false; handleDragDrop(); }; - Inventory.Close = function() { + Inventory.Close = function () { $(".item-slot").css("border", "1px solid rgba(255, 255, 255, 0.1)"); $(".ply-hotbar-inventory").css("display", "block"); $(".ply-iteminfo-container").css("display", "none"); @@ -2569,14 +1635,14 @@ var requiredItemOpen = false; } if (ClickedItemData !== null) { - $("#weapon-attachments").fadeOut(250, function() { + $("#weapon-attachments").fadeOut(250, function () { $("#weapon-attachments").remove(); ClickedItemData = {}; }); } }; - Inventory.Update = function(data) { + Inventory.Update = function (data) { totalWeight = 0; totalWeightOther = 0; $(".player-inventory").find(".item-slot").remove(); @@ -2586,21 +1652,13 @@ var requiredItemOpen = false; } for (i = 1; i < data.slots + 1; i++) { if (i == 41) { - $(".player-inventory").append( - '

6

 

' - ); + $(".player-inventory").append('

6

 

'); } else { - $(".player-inventory").append( - '

 

' - ); + $(".player-inventory").append('

 

'); } } - $.each(data.inventory, function(i, item) { + $.each(data.inventory, function (i, item) { if (item != null) { totalWeight += item.weight * item.amount; if (item.slot < 6) { @@ -2609,21 +1667,7 @@ var requiredItemOpen = false; .addClass("item-drag"); $(".player-inventory") .find("[data-slot=" + item.slot + "]") - .html( - '

' + - item.slot + - '

' +
-                            item.name +
-                            '

' + - item.amount + - " (" + - ((item.weight * item.amount) / 1000).toFixed(1) + - ')

' + - item.label + - "

" - ); + .html('

' + item.slot + '

' + item.name + '

' + item.amount + " (" + ((item.weight * item.amount) / 1000).toFixed(1) + ')

' + item.label + "

"); $(".player-inventory") .find("[data-slot=" + item.slot + "]") .data("item", item); @@ -2633,19 +1677,7 @@ var requiredItemOpen = false; .addClass("item-drag"); $(".player-inventory") .find("[data-slot=" + item.slot + "]") - .html( - '

6

' +
-                            item.name +
-                            '

' + - item.amount + - " (" + - ((item.weight * item.amount) / 1000).toFixed(1) + - ')

' + - item.label + - "

" - ); + .html('

6

' + item.name + '

' + item.amount + " (" + ((item.weight * item.amount) / 1000).toFixed(1) + ')

' + item.label + "

"); $(".player-inventory") .find("[data-slot=" + item.slot + "]") .data("item", item); @@ -2655,19 +1687,7 @@ var requiredItemOpen = false; .addClass("item-drag"); $(".player-inventory") .find("[data-slot=" + item.slot + "]") - .html( - '
' +
-                            item.name +
-                            '

' + - item.amount + - " (" + - ((item.weight * item.amount) / 1000).toFixed(1) + - ')

' + - item.label + - "

" - ); + .html('
' + item.name + '

' + item.amount + " (" + ((item.weight * item.amount) / 1000).toFixed(1) + ')

' + item.label + "

"); $(".player-inventory") .find("[data-slot=" + item.slot + "]") .data("item", item); @@ -2680,90 +1700,50 @@ var requiredItemOpen = false; handleDragDrop(); }; - Inventory.ToggleHotbar = function(data) { + Inventory.ToggleHotbar = function (data) { if (data.open) { $(".z-hotbar-inventory").html(""); for (i = 1; i < 6; i++) { - var elem = - '

' + - i + - '

 

'; + var elem = '

' + i + '

 

'; $(".z-hotbar-inventory").append(elem); } - var elem = - '

6

 

'; + var elem = '

6

 

'; $(".z-hotbar-inventory").append(elem); - $.each(data.items, function(i, item) { + $.each(data.items, function (i, item) { if (item != null) { - var ItemLabel = - '

' + item.label + "

"; + var ItemLabel = '

' + item.label + "

"; if (item.name.split("_")[0] == "weapon") { if (!Inventory.IsWeaponBlocked(item.name)) { - ItemLabel = - '

100

' + - item.label + - "

"; + ItemLabel = '

100

' + item.label + "

"; } } if (item.slot == 41) { $(".z-hotbar-inventory") .find("[data-zhotbarslot=" + item.slot + "]") - .html( - '

6

' +
-                                item.name +
-                                '

' + - item.amount + - " (" + - ((item.weight * item.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + .html('

6

' + item.name + '

' + item.amount + " (" + ((item.weight * item.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } else { $(".z-hotbar-inventory") .find("[data-zhotbarslot=" + item.slot + "]") - .html( - '

' + - item.slot + - '

' +
-                                item.name +
-                                '

' + - item.amount + - " (" + - ((item.weight * item.amount) / 1000).toFixed(1) + - ")

" + - ItemLabel - ); + .html('

' + item.slot + '

' + item.name + '

' + item.amount + " (" + ((item.weight * item.amount) / 1000).toFixed(1) + ")

" + ItemLabel); } Inventory.QualityCheck(item, true, false); } }); $(".z-hotbar-inventory").fadeIn(150); } else { - $(".z-hotbar-inventory").fadeOut(150, function() { + $(".z-hotbar-inventory").fadeOut(150, function () { $(".z-hotbar-inventory").html(""); }); } }; - Inventory.UseItem = function(data) { + Inventory.UseItem = function (data) { $(".itembox-container").hide(); $(".itembox-container").fadeIn(250); $("#itembox-action").html("

Used

"); $("#itembox-label").html("

" + data.item.label + "

"); - $("#itembox-image").html( - '
' +
-            data.item.name +
-            '
' - ); - setTimeout(function() { + $("#itembox-image").html('
' + data.item.name + '
'); + setTimeout(function () { $(".itembox-container").fadeOut(250); }, 2000); }; @@ -2771,7 +1751,7 @@ var requiredItemOpen = false; var itemBoxtimer = null; var requiredTimeout = null; - Inventory.itemBox = function(data) { + Inventory.itemBox = function (data) { if (itemBoxtimer !== null) { clearTimeout(itemBoxtimer); } @@ -2784,42 +1764,25 @@ var requiredItemOpen = false; var $itembox = $(".itembox-container.template").clone(); $itembox.removeClass("template"); - $itembox.html( - '

' + - type + - '

' + - data.item.label + - '

' +
-            data.item.name +
-            '
' - ); + $itembox.html('

' + type + '

' + data.item.label + '

' + data.item.name + '
'); $(".itemboxes-container").prepend($itembox); $itembox.fadeIn(250); - setTimeout(function() { - $.when($itembox.fadeOut(300)).done(function() { + setTimeout(function () { + $.when($itembox.fadeOut(300)).done(function () { $itembox.remove(); }); }, 3000); }; - Inventory.RequiredItem = function(data) { + Inventory.RequiredItem = function (data) { if (requiredTimeout !== null) { clearTimeout(requiredTimeout); } if (data.toggle) { if (!requiredItemOpen) { $(".requiredItem-container").html(""); - $.each(data.items, function(index, item) { - var element = - '
Required

' + - item.label + - '

' +
-                        item.name +
-                        '
'; + $.each(data.items, function (index, item) { + var element = '
Required

' + item.label + '

' + item.name + '
'; $(".requiredItem-container").hide(); $(".requiredItem-container").append(element); $(".requiredItem-container").fadeIn(100); @@ -2828,15 +1791,15 @@ var requiredItemOpen = false; } } else { $(".requiredItem-container").fadeOut(100); - requiredTimeout = setTimeout(function() { + requiredTimeout = setTimeout(function () { $(".requiredItem-container").html(""); requiredItemOpen = false; }, 100); } }; - window.onload = function(e) { - window.addEventListener("message", function(event) { + window.onload = function (e) { + window.addEventListener("message", function (event) { switch (event.data.action) { case "open": Inventory.Open(event.data); @@ -2857,9 +1820,7 @@ var requiredItemOpen = false; Inventory.ToggleHotbar(event.data); break; case "RobMoney": - $(".inv-options-list").append( - '

TAKE MONEY

' - ); + $(".inv-options-list").append('

TAKE MONEY

'); $("#rob-money").data("TargetId", event.data.TargetId); break; } @@ -2867,7 +1828,7 @@ var requiredItemOpen = false; }; })(); -$(document).on("click", "#rob-money", function(e) { +$(document).on("click", "#rob-money", function (e) { e.preventDefault(); var TargetId = $(this).data("TargetId"); $.post( @@ -2881,8 +1842,8 @@ $(document).on("click", "#rob-money", function(e) { $("#item-give").droppable({ hoverClass: "button-hover", - drop: function(event, ui) { - setTimeout(function() { + drop: function (event, ui) { + setTimeout(function () { IsDragging = false; }, 300); fromData = ui.draggable.data("item"); diff --git a/server/main.lua b/server/main.lua index 51cb4d091..3a5e0b025 100644 --- a/server/main.lua +++ b/server/main.lua @@ -16,14 +16,14 @@ local ShopItems = {} ---@param citizenid string CitizenID of the player ---@return { [number]: { name: string, amount: number, info?: table, label: string, description: string, weight: number, type: string, unique: boolean, useable: boolean, image: string, shouldClose: boolean, slot: number, combinable: table } } loadedInventory Table of items with slot as index local function LoadInventory(source, citizenid) - local inventory = MySQL.prepare.await('SELECT inventory FROM players WHERE citizenid = ?', { citizenid }) + local inventory = MySQL.prepare.await('SELECT inventory FROM players WHERE citizenid = ?', { citizenid }) local loadedInventory = {} - local missingItems = {} + local missingItems = {} - if not inventory then return loadedInventory end + if not inventory then return loadedInventory end inventory = json.decode(inventory) - if table.type(inventory) == "empty" then return loadedInventory end + if table.type(inventory) == 'empty' then return loadedInventory end for _, item in pairs(inventory) do if item then @@ -50,14 +50,14 @@ local function LoadInventory(source, citizenid) end end - if #missingItems > 0 then - print(("The following items were removed for player %s as they no longer exist"):format(GetPlayerName(source))) - end + if #missingItems > 0 then + print(('The following items were removed for player %s as they no longer exist'):format(GetPlayerName(source))) + end - return loadedInventory + return loadedInventory end -exports("LoadInventory", LoadInventory) +exports('LoadInventory', LoadInventory) ---Saves the inventory for the player with the provided source or PlayerData is they're offline ---@param source number | table Source of the player, if offline, then provide the PlayerData in this argument @@ -74,74 +74,74 @@ local function SaveInventory(source, offline) PlayerData = source -- for offline users, the playerdata gets sent over the source variable end - local items = PlayerData.items - local ItemsJson = {} - if items and table.type(items) ~= "empty" then - for slot, item in pairs(items) do - if items[slot] then - ItemsJson[#ItemsJson+1] = { - name = item.name, - amount = item.amount, - info = item.info, - type = item.type, - slot = slot, - } - end - end - MySQL.prepare('UPDATE players SET inventory = ? WHERE citizenid = ?', { json.encode(ItemsJson), PlayerData.citizenid }) - else - MySQL.prepare('UPDATE players SET inventory = ? WHERE citizenid = ?', { '[]', PlayerData.citizenid }) - end + local items = PlayerData.items + local ItemsJson = {} + if items and table.type(items) ~= 'empty' then + for slot, item in pairs(items) do + if items[slot] then + ItemsJson[#ItemsJson + 1] = { + name = item.name, + amount = item.amount, + info = item.info, + type = item.type, + slot = slot, + } + end + end + MySQL.prepare('UPDATE players SET inventory = ? WHERE citizenid = ?', { json.encode(ItemsJson), PlayerData.citizenid }) + else + MySQL.prepare('UPDATE players SET inventory = ? WHERE citizenid = ?', { '[]', PlayerData.citizenid }) + end end -exports("SaveInventory", SaveInventory) +exports('SaveInventory', SaveInventory) ---Gets the totalweight of the items provided ---@param items { [number]: { amount: number, weight: number } } Table of items, usually the inventory table of the player ---@return number weight Total weight of param items local function GetTotalWeight(items) local weight = 0 - if not items then return 0 end - for _, item in pairs(items) do - weight += item.weight * item.amount - end - return tonumber(weight) + if not items then return 0 end + for _, item in pairs(items) do + weight += item.weight * item.amount + end + return tonumber(weight) end -exports("GetTotalWeight", GetTotalWeight) +exports('GetTotalWeight', GetTotalWeight) ---Gets the slots that the provided item is in ---@param items { [number]: { name: string, amount: number, info?: table, label: string, description: string, weight: number, type: string, unique: boolean, useable: boolean, image: string, shouldClose: boolean, slot: number, combinable: table } } Table of items, usually the inventory table of the player ---@param itemName string Name of the item to the get the slots from ---@return number[] slotsFound Array of slots that were found for the item local function GetSlotsByItem(items, itemName) - local slotsFound = {} - if not items then return slotsFound end - for slot, item in pairs(items) do - if item.name:lower() == itemName:lower() then - slotsFound[#slotsFound+1] = slot - end - end - return slotsFound + local slotsFound = {} + if not items then return slotsFound end + for slot, item in pairs(items) do + if item.name:lower() == itemName:lower() then + slotsFound[#slotsFound + 1] = slot + end + end + return slotsFound end -exports("GetSlotsByItem", GetSlotsByItem) +exports('GetSlotsByItem', GetSlotsByItem) ---Get the first slot where the item is located ---@param items { [number]: { name: string, amount: number, info?: table, label: string, description: string, weight: number, type: string, unique: boolean, useable: boolean, image: string, shouldClose: boolean, slot: number, combinable: table } } Table of items, usually the inventory table of the player ---@param itemName string Name of the item to the get the slot from ---@return number | nil slot If found it returns a number representing the slot, otherwise it sends nil local function GetFirstSlotByItem(items, itemName) - if not items then return nil end - for slot, item in pairs(items) do - if item.name:lower() == itemName:lower() then - return tonumber(slot) - end - end - return nil + if not items then return nil end + for slot, item in pairs(items) do + if item.name:lower() == itemName:lower() then + return tonumber(slot) + end + end + return nil end -exports("GetFirstSlotByItem", GetFirstSlotByItem) +exports('GetFirstSlotByItem', GetFirstSlotByItem) ---Add an item to the inventory of the player ---@param source number The source of the player @@ -158,7 +158,7 @@ local function AddItem(source, item, amount, slot, info) local totalWeight = GetTotalWeight(Player.PlayerData.items) local itemInfo = QBCore.Shared.Items[item:lower()] if not itemInfo and not Player.Offline then - QBCore.Functions.Notify(source, "Item does not exist", 'error') + QBCore.Functions.Notify(source, 'Item does not exist', 'error') return false end @@ -173,7 +173,7 @@ local function AddItem(source, item, amount, slot, info) if (totalWeight + (itemInfo['weight'] * amount)) <= Config.MaxInventoryWeight then if (slot and Player.PlayerData.items[slot]) and (Player.PlayerData.items[slot].name:lower() == item:lower()) and (itemInfo['type'] == 'item' and not itemInfo['unique']) then Player.PlayerData.items[slot].amount = Player.PlayerData.items[slot].amount + amount - Player.Functions.SetPlayerData("items", Player.PlayerData.items) + Player.Functions.SetPlayerData('items', Player.PlayerData.items) if Player.Offline then return true end @@ -182,7 +182,7 @@ local function AddItem(source, item, amount, slot, info) return true elseif not itemInfo['unique'] and slot or slot and Player.PlayerData.items[slot] == nil then Player.PlayerData.items[slot] = { name = itemInfo['name'], amount = amount, info = info or '', label = itemInfo['label'], description = itemInfo['description'] or '', weight = itemInfo['weight'], type = itemInfo['type'], unique = itemInfo['unique'], useable = itemInfo['useable'], image = itemInfo['image'], shouldClose = itemInfo['shouldClose'], slot = slot, combinable = itemInfo['combinable'] } - Player.Functions.SetPlayerData("items", Player.PlayerData.items) + Player.Functions.SetPlayerData('items', Player.PlayerData.items) if Player.Offline then return true end @@ -193,7 +193,7 @@ local function AddItem(source, item, amount, slot, info) for i = 1, Config.MaxInventorySlots, 1 do if Player.PlayerData.items[i] == nil then Player.PlayerData.items[i] = { name = itemInfo['name'], amount = amount, info = info or '', label = itemInfo['label'], description = itemInfo['description'] or '', weight = itemInfo['weight'], type = itemInfo['type'], unique = itemInfo['unique'], useable = itemInfo['useable'], image = itemInfo['image'], shouldClose = itemInfo['shouldClose'], slot = i, combinable = itemInfo['combinable'] } - Player.Functions.SetPlayerData("items", Player.PlayerData.items) + Player.Functions.SetPlayerData('items', Player.PlayerData.items) if Player.Offline then return true end @@ -204,12 +204,12 @@ local function AddItem(source, item, amount, slot, info) end end elseif not Player.Offline then - QBCore.Functions.Notify(source, "Inventory too full", 'error') + QBCore.Functions.Notify(source, 'Inventory too full', 'error') end return false end -exports("AddItem", AddItem) +exports('AddItem', AddItem) ---Remove an item from the inventory of the player ---@param source number The source of the player @@ -228,7 +228,7 @@ local function RemoveItem(source, item, amount, slot) if slot then if Player.PlayerData.items[slot].amount > amount then Player.PlayerData.items[slot].amount = Player.PlayerData.items[slot].amount - amount - Player.Functions.SetPlayerData("items", Player.PlayerData.items) + Player.Functions.SetPlayerData('items', Player.PlayerData.items) if not Player.Offline then TriggerEvent('qb-log:server:CreateLog', 'playerinventory', 'RemoveItem', 'red', '**' .. GetPlayerName(source) .. ' (citizenid: ' .. Player.PlayerData.citizenid .. ' | id: ' .. source .. ')** lost item: [slot:' .. slot .. '], itemname: ' .. Player.PlayerData.items[slot].name .. ', removed amount: ' .. amount .. ', new total amount: ' .. Player.PlayerData.items[slot].amount) @@ -237,7 +237,7 @@ local function RemoveItem(source, item, amount, slot) return true elseif Player.PlayerData.items[slot].amount == amount then Player.PlayerData.items[slot] = nil - Player.Functions.SetPlayerData("items", Player.PlayerData.items) + Player.Functions.SetPlayerData('items', Player.PlayerData.items) if Player.Offline then return true end @@ -254,7 +254,7 @@ local function RemoveItem(source, item, amount, slot) for _, _slot in pairs(slots) do if Player.PlayerData.items[_slot].amount > amountToRemove then Player.PlayerData.items[_slot].amount = Player.PlayerData.items[_slot].amount - amountToRemove - Player.Functions.SetPlayerData("items", Player.PlayerData.items) + Player.Functions.SetPlayerData('items', Player.PlayerData.items) if not Player.Offline then TriggerEvent('qb-log:server:CreateLog', 'playerinventory', 'RemoveItem', 'red', '**' .. GetPlayerName(source) .. ' (citizenid: ' .. Player.PlayerData.citizenid .. ' | id: ' .. source .. ')** lost item: [slot:' .. _slot .. '], itemname: ' .. Player.PlayerData.items[_slot].name .. ', removed amount: ' .. amount .. ', new total amount: ' .. Player.PlayerData.items[_slot].amount) @@ -263,7 +263,7 @@ local function RemoveItem(source, item, amount, slot) return true elseif Player.PlayerData.items[_slot].amount == amountToRemove then Player.PlayerData.items[_slot] = nil - Player.Functions.SetPlayerData("items", Player.PlayerData.items) + Player.Functions.SetPlayerData('items', Player.PlayerData.items) if Player.Offline then return true end @@ -276,7 +276,7 @@ local function RemoveItem(source, item, amount, slot) return false end -exports("RemoveItem", RemoveItem) +exports('RemoveItem', RemoveItem) ---Get the item with the slot ---@param source number The source of the player to get the item from the slot @@ -288,7 +288,7 @@ local function GetItemBySlot(source, slot) return Player.PlayerData.items[slot] end -exports("GetItemBySlot", GetItemBySlot) +exports('GetItemBySlot', GetItemBySlot) ---Get the item from the inventory of the player with the provided source by the name of the item ---@param source number The source of the player @@ -301,7 +301,7 @@ local function GetItemByName(source, item) return Player.PlayerData.items[slot] end -exports("GetItemByName", GetItemByName) +exports('GetItemByName', GetItemByName) ---Get the item from the inventory of the player with the provided source by the name of the item in an array for all slots that the item is in ---@param source number The source of the player @@ -314,13 +314,13 @@ local function GetItemsByName(source, item) local slots = GetSlotsByItem(Player.PlayerData.items, item) for _, slot in pairs(slots) do if slot then - items[#items+1] = Player.PlayerData.items[slot] + items[#items + 1] = Player.PlayerData.items[slot] end end return items end -exports("GetItemsByName", GetItemsByName) +exports('GetItemsByName', GetItemsByName) ---Clear the inventory of the player with the provided source and filter any items out of the clearing of the inventory to keep (optional) ---@param source number Source of the player to clear the inventory from @@ -331,13 +331,13 @@ local function ClearInventory(source, filterItems) if filterItems then local filterItemsType = type(filterItems) - if filterItemsType == "string" then + if filterItemsType == 'string' then local item = GetItemByName(source, filterItems) if item then savedItemData[item.slot] = item end - elseif filterItemsType == "table" and table.type(filterItems) == "array" then + elseif filterItemsType == 'table' and table.type(filterItems) == 'array' then for i = 1, #filterItems do local item = GetItemByName(source, filterItems[i]) @@ -348,14 +348,14 @@ local function ClearInventory(source, filterItems) end end - Player.Functions.SetPlayerData("items", savedItemData) + Player.Functions.SetPlayerData('items', savedItemData) if Player.Offline then return end TriggerEvent('qb-log:server:CreateLog', 'playerinventory', 'ClearInventory', 'red', '**' .. GetPlayerName(source) .. ' (citizenid: ' .. Player.PlayerData.citizenid .. ' | id: ' .. source .. ')** inventory cleared') end -exports("ClearInventory", ClearInventory) +exports('ClearInventory', ClearInventory) ---Sets the items playerdata to the provided items param ---@param source number The source of player to set it for @@ -363,14 +363,14 @@ exports("ClearInventory", ClearInventory) local function SetInventory(source, items) local Player = QBCore.Functions.GetPlayer(source) - Player.Functions.SetPlayerData("items", items) + Player.Functions.SetPlayerData('items', items) if Player.Offline then return end TriggerEvent('qb-log:server:CreateLog', 'playerinventory', 'SetInventory', 'blue', '**' .. GetPlayerName(source) .. ' (citizenid: ' .. Player.PlayerData.citizenid .. ' | id: ' .. source .. ')** items set: ' .. json.encode(items)) end -exports("SetInventory", SetInventory) +exports('SetInventory', SetInventory) ---Set the data of a specific item ---@param source number The source of the player to set it for @@ -391,12 +391,12 @@ local function SetItemData(source, itemName, key, val) item[key] = val Player.PlayerData.items[item.slot] = item - Player.Functions.SetPlayerData("items", Player.PlayerData.items) + Player.Functions.SetPlayerData('items', Player.PlayerData.items) return true end -exports("SetItemData", SetItemData) +exports('SetItemData', SetItemData) ---Checks if you have an item or not ---@param source number The source of the player to check it for @@ -404,39 +404,39 @@ exports("SetItemData", SetItemData) ---@param amount? number The amount of the item to check for, this will only have effect when items is a string or an array of strings ---@return boolean success Returns true if the player has the item local function HasItem(source, items, amount) - local Player = QBCore.Functions.GetPlayer(source) - if not Player then return false end - local isTable = type(items) == 'table' - local isArray = isTable and table.type(items) == 'array' or false - local totalItems = #items - local count = 0 - local kvIndex = 2 - if isTable and not isArray then - totalItems = 0 - for _ in pairs(items) do totalItems += 1 end - kvIndex = 1 - end - if isTable then - for k, v in pairs(items) do - local itemKV = {k, v} - local item = GetItemByName(source, itemKV[kvIndex]) - if item and ((amount and item.amount >= amount) or (not isArray and item.amount >= v) or (not amount and isArray)) then - count += 1 - end - end - if count == totalItems then - return true - end - else -- Single item as string - local item = GetItemByName(source, items) - if item and (not amount or (item and amount and item.amount >= amount)) then - return true - end - end - return false + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return false end + local isTable = type(items) == 'table' + local isArray = isTable and table.type(items) == 'array' or false + local totalItems = #items + local count = 0 + local kvIndex = 2 + if isTable and not isArray then + totalItems = 0 + for _ in pairs(items) do totalItems += 1 end + kvIndex = 1 + end + if isTable then + for k, v in pairs(items) do + local itemKV = { k, v } + local item = GetItemByName(source, itemKV[kvIndex]) + if item and ((amount and item.amount >= amount) or (not isArray and item.amount >= v) or (not amount and isArray)) then + count += 1 + end + end + if count == totalItems then + return true + end + else -- Single item as string + local item = GetItemByName(source, items) + if item and (not amount or (item and amount and item.amount >= amount)) then + return true + end + end + return false end -exports("HasItem", HasItem) +exports('HasItem', HasItem) ---Create a usable item with a callback on use ---@param itemName string The name of the item to make usable @@ -445,7 +445,7 @@ local function CreateUsableItem(itemName, data) QBCore.Functions.CreateUseableItem(itemName, data) end -exports("CreateUsableItem", CreateUsableItem) +exports('CreateUsableItem', CreateUsableItem) ---Get the usable item data for the specified item ---@param itemName string The item to get the data for @@ -454,7 +454,7 @@ local function GetUsableItem(itemName) return QBCore.Functions.CanUseItem(itemName) end -exports("GetUsableItem", GetUsableItem) +exports('GetUsableItem', GetUsableItem) ---Use an item from the QBCore.UsableItems table if a callback is present ---@param itemName string The name of the item to use @@ -466,7 +466,7 @@ local function UseItem(itemName, ...) callback(...) end -exports("UseItem", UseItem) +exports('UseItem', UseItem) ---Check if a recipe contains the item ---@param recipe table The recipe of the item @@ -501,8 +501,8 @@ end ---@param plate string The plate to check ---@return boolean owned local function IsVehicleOwned(plate) - local result = MySQL.scalar.await('SELECT 1 from player_vehicles WHERE plate = ?', {plate}) - return result + local result = MySQL.scalar.await('SELECT 1 from player_vehicles WHERE plate = ?', { plate }) + return result end ---Setup the shop items @@ -515,17 +515,17 @@ local function SetupShopItems(shopItems) local itemInfo = QBCore.Shared.Items[item.name:lower()] if itemInfo then items[item.slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = tonumber(item.amount), - info = item.info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], + info = item.info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], price = item.price, - image = itemInfo["image"], + image = itemInfo['image'], slot = item.slot, } end @@ -539,7 +539,7 @@ end ----@return table items local function GetStashItems(stashId) local items = {} - local result = MySQL.scalar.await('SELECT items FROM stashitems WHERE stash = ?', {stashId}) + local result = MySQL.scalar.await('SELECT items FROM stashitems WHERE stash = ?', { stashId }) if not result then return items end local stashItems = json.decode(result) @@ -549,16 +549,16 @@ local function GetStashItems(stashId) local itemInfo = QBCore.Shared.Items[item.name:lower()] if itemInfo then items[item.slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = tonumber(item.amount), - info = item.info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = item.info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = item.slot, } end @@ -570,7 +570,7 @@ end ---@param stashId string The stash id to save the items from ---@param items table items to save local function SaveStashItems(stashId, items) - if Stashes[stashId].label == "Stash-None" or not items then return end + if Stashes[stashId].label == 'Stash-None' or not items then return end for _, item in pairs(items) do item.description = nil @@ -600,16 +600,16 @@ local function AddToStash(stashId, slot, otherslot, itemName, amount, info) else local itemInfo = QBCore.Shared.Items[itemName:lower()] Stashes[stashId].items[slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = amount, - info = info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = slot, } end @@ -617,31 +617,31 @@ local function AddToStash(stashId, slot, otherslot, itemName, amount, info) if Stashes[stashId].items[slot] and Stashes[stashId].items[slot].name == itemName then local itemInfo = QBCore.Shared.Items[itemName:lower()] Stashes[stashId].items[otherslot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = amount, - info = info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = otherslot, } else local itemInfo = QBCore.Shared.Items[itemName:lower()] Stashes[stashId].items[slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = amount, - info = info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = slot, } end @@ -674,7 +674,7 @@ end ---@return table items local function GetOwnedVehicleItems(plate) local items = {} - local result = MySQL.scalar.await('SELECT items FROM trunkitems WHERE plate = ?', {plate}) + local result = MySQL.scalar.await('SELECT items FROM trunkitems WHERE plate = ?', { plate }) if not result then return items end local trunkItems = json.decode(result) @@ -684,16 +684,16 @@ local function GetOwnedVehicleItems(plate) local itemInfo = QBCore.Shared.Items[item.name:lower()] if itemInfo then items[item.slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = tonumber(item.amount), - info = item.info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = item.info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = item.slot, } end @@ -705,7 +705,7 @@ end ---@param plate string The plate to save the items from ---@param items table local function SaveOwnedVehicleItems(plate, items) - if Trunks[plate].label == "Trunk-None" or not items then return end + if Trunks[plate].label == 'Trunk-None' or not items then return end for _, item in pairs(items) do item.description = nil @@ -736,16 +736,16 @@ local function AddToTrunk(plate, slot, otherslot, itemName, amount, info) else local itemInfo = QBCore.Shared.Items[itemName:lower()] Trunks[plate].items[slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = amount, - info = info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = slot, } end @@ -753,31 +753,31 @@ local function AddToTrunk(plate, slot, otherslot, itemName, amount, info) if Trunks[plate].items[slot] and Trunks[plate].items[slot].name == itemName then local itemInfo = QBCore.Shared.Items[itemName:lower()] Trunks[plate].items[otherslot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = amount, - info = info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = otherslot, } else local itemInfo = QBCore.Shared.Items[itemName:lower()] Trunks[plate].items[slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = amount, - info = info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = slot, } end @@ -810,7 +810,7 @@ end ---@return table items local function GetOwnedVehicleGloveboxItems(plate) local items = {} - local result = MySQL.scalar.await('SELECT items FROM gloveboxitems WHERE plate = ?', {plate}) + local result = MySQL.scalar.await('SELECT items FROM gloveboxitems WHERE plate = ?', { plate }) if not result then return items end local gloveboxItems = json.decode(result) @@ -820,16 +820,16 @@ local function GetOwnedVehicleGloveboxItems(plate) local itemInfo = QBCore.Shared.Items[item.name:lower()] if itemInfo then items[item.slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = tonumber(item.amount), - info = item.info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = item.info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = item.slot, } end @@ -841,7 +841,7 @@ end ---@param plate string The plate to save the items from ---@param items table local function SaveOwnedGloveboxItems(plate, items) - if Gloveboxes[plate].label == "Glovebox-None" or not items then return end + if Gloveboxes[plate].label == 'Glovebox-None' or not items then return end for _, item in pairs(items) do item.description = nil @@ -872,16 +872,16 @@ local function AddToGlovebox(plate, slot, otherslot, itemName, amount, info) else local itemInfo = QBCore.Shared.Items[itemName:lower()] Gloveboxes[plate].items[slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = amount, - info = info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = slot, } end @@ -889,31 +889,31 @@ local function AddToGlovebox(plate, slot, otherslot, itemName, amount, info) if Gloveboxes[plate].items[slot] and Gloveboxes[plate].items[slot].name == itemName then local itemInfo = QBCore.Shared.Items[itemName:lower()] Gloveboxes[plate].items[otherslot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = amount, - info = info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = otherslot, } else local itemInfo = QBCore.Shared.Items[itemName:lower()] Gloveboxes[plate].items[slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = amount, - info = info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = slot, } end @@ -955,16 +955,16 @@ local function AddToDrop(dropId, slot, itemName, amount, info) else local itemInfo = QBCore.Shared.Items[itemName:lower()] Drops[dropId].items[slot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = amount, - info = info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = slot, id = dropId, } @@ -1025,7 +1025,7 @@ local function CreateNewDrop(source, fromSlot, toSlot, itemAmount) local coords = GetEntityCoords(GetPlayerPed(source)) if RemoveItem(source, itemData.name, itemAmount, itemData.slot) then - TriggerClientEvent("inventory:client:CheckWeapon", source, itemData.name) + TriggerClientEvent('inventory:client:CheckWeapon', source, itemData.name) local itemInfo = QBCore.Shared.Items[itemData.name:lower()] local dropId = CreateDropId() Drops[dropId] = {} @@ -1035,40 +1035,40 @@ local function CreateNewDrop(source, fromSlot, toSlot, itemAmount) Drops[dropId].items = {} Drops[dropId].items[toSlot] = { - name = itemInfo["name"], + name = itemInfo['name'], amount = itemAmount, - info = itemData.info or "", - label = itemInfo["label"], - description = itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], + info = itemData.info or '', + label = itemInfo['label'], + description = itemInfo['description'] or '', + weight = itemInfo['weight'], + type = itemInfo['type'], + unique = itemInfo['unique'], + useable = itemInfo['useable'], + image = itemInfo['image'], slot = toSlot, id = dropId, } - TriggerEvent("qb-log:server:CreateLog", "drop", "New Item Drop", "red", "**".. GetPlayerName(source) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..source.."*) dropped new item; name: **"..itemData.name.."**, amount: **" .. itemAmount .. "**") - TriggerClientEvent("inventory:client:DropItemAnim", source) - TriggerClientEvent("inventory:client:AddDropItem", -1, dropId, source, coords) - if itemData.name:lower() == "radio" then + TriggerEvent('qb-log:server:CreateLog', 'drop', 'New Item Drop', 'red', '**' .. GetPlayerName(source) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. source .. '*) dropped new item; name: **' .. itemData.name .. '**, amount: **' .. itemAmount .. '**') + TriggerClientEvent('inventory:client:DropItemAnim', source) + TriggerClientEvent('inventory:client:AddDropItem', -1, dropId, source, coords) + if itemData.name:lower() == 'radio' then TriggerClientEvent('Radio.Set', source, false) end else - QBCore.Functions.Notify(source, Lang:t("notify.missitem"), "error") + QBCore.Functions.Notify(source, Lang:t('notify.missitem'), 'error') end end local function OpenInventory(name, id, other, origin) local src = origin local ply = Player(src) - local Player = QBCore.Functions.GetPlayer(src) + local Player = QBCore.Functions.GetPlayer(src) if ply.state.inv_busy then - return QBCore.Functions.Notify(src, Lang:t("notify.noaccess"), 'error') + return QBCore.Functions.Notify(src, Lang:t('notify.noaccess'), 'error') end if name and id then local secondInv = {} - if name == "stash" then + if name == 'stash' then if Stashes[id] then if Stashes[id].isOpen then local Target = QBCore.Functions.GetPlayer(Stashes[id].isOpen) @@ -1085,14 +1085,14 @@ local function OpenInventory(name, id, other, origin) maxweight = other.maxweight or 1000000 slots = other.slots or 50 end - secondInv.name = "stash-"..id - secondInv.label = "Stash-"..id + secondInv.name = 'stash-' .. id + secondInv.label = 'Stash-' .. id secondInv.maxweight = maxweight secondInv.inventory = {} secondInv.slots = slots if Stashes[id] and Stashes[id].isOpen then - secondInv.name = "none-inv" - secondInv.label = "Stash-None" + secondInv.name = 'none-inv' + secondInv.label = 'Stash-None' secondInv.maxweight = 1000000 secondInv.inventory = {} secondInv.slots = 0 @@ -1111,7 +1111,7 @@ local function OpenInventory(name, id, other, origin) Stashes[id].label = secondInv.label end end - elseif name == "trunk" then + elseif name == 'trunk' then if Trunks[id] then if Trunks[id].isOpen then local Target = QBCore.Functions.GetPlayer(Trunks[id].isOpen) @@ -1122,14 +1122,14 @@ local function OpenInventory(name, id, other, origin) end end end - secondInv.name = "trunk-"..id - secondInv.label = "Trunk-"..id + secondInv.name = 'trunk-' .. id + secondInv.label = 'Trunk-' .. id secondInv.maxweight = other.maxweight or 60000 secondInv.inventory = {} secondInv.slots = other.slots or 50 - if (Trunks[id] and Trunks[id].isOpen) or (QBCore.Shared.SplitStr(id, "PLZI")[2] and (Player.PlayerData.job.name ~= "police" or Player.PlayerData.job.type ~= "leo")) then - secondInv.name = "none-inv" - secondInv.label = "Trunk-None" + if (Trunks[id] and Trunks[id].isOpen) or (QBCore.Shared.SplitStr(id, 'PLZI')[2] and (Player.PlayerData.job.name ~= 'police' or Player.PlayerData.job.type ~= 'leo')) then + secondInv.name = 'none-inv' + secondInv.label = 'Trunk-None' secondInv.maxweight = other.maxweight or 60000 secondInv.inventory = {} secondInv.slots = 0 @@ -1154,7 +1154,7 @@ local function OpenInventory(name, id, other, origin) end end end - elseif name == "glovebox" then + elseif name == 'glovebox' then if Gloveboxes[id] then if Gloveboxes[id].isOpen then local Target = QBCore.Functions.GetPlayer(Gloveboxes[id].isOpen) @@ -1165,14 +1165,14 @@ local function OpenInventory(name, id, other, origin) end end end - secondInv.name = "glovebox-"..id - secondInv.label = "Glovebox-"..id + secondInv.name = 'glovebox-' .. id + secondInv.label = 'Glovebox-' .. id secondInv.maxweight = 10000 secondInv.inventory = {} secondInv.slots = 5 if Gloveboxes[id] and Gloveboxes[id].isOpen then - secondInv.name = "none-inv" - secondInv.label = "Glovebox-None" + secondInv.name = 'none-inv' + secondInv.label = 'Glovebox-None' secondInv.maxweight = 10000 secondInv.inventory = {} secondInv.slots = 0 @@ -1195,40 +1195,40 @@ local function OpenInventory(name, id, other, origin) Gloveboxes[id].label = secondInv.label end end - elseif name == "shop" then - secondInv.name = "itemshop-"..id + elseif name == 'shop' then + secondInv.name = 'itemshop-' .. id secondInv.label = other.label secondInv.maxweight = 900000 secondInv.inventory = SetupShopItems(other.items) ShopItems[id] = {} ShopItems[id].items = other.items secondInv.slots = #other.items - elseif name == "traphouse" then - secondInv.name = "traphouse-"..id + elseif name == 'traphouse' then + secondInv.name = 'traphouse-' .. id secondInv.label = other.label secondInv.maxweight = 900000 secondInv.inventory = other.items secondInv.slots = other.slots - elseif name == "crafting" then - secondInv.name = "crafting" + elseif name == 'crafting' then + secondInv.name = 'crafting' secondInv.label = other.label secondInv.maxweight = 900000 secondInv.inventory = other.items secondInv.slots = #other.items - elseif name == "attachment_crafting" then - secondInv.name = "attachment_crafting" + elseif name == 'attachment_crafting' then + secondInv.name = 'attachment_crafting' secondInv.label = other.label secondInv.maxweight = 900000 secondInv.inventory = other.items secondInv.slots = #other.items - elseif name == "otherplayer" then + elseif name == 'otherplayer' then local OtherPlayer = QBCore.Functions.GetPlayer(tonumber(id)) if OtherPlayer then - secondInv.name = "otherplayer-"..id - secondInv.label = "Player-"..id + secondInv.name = 'otherplayer-' .. id + secondInv.label = 'Player-' .. id secondInv.maxweight = Config.MaxInventoryWeight secondInv.inventory = OtherPlayer.PlayerData.items - if (Player.PlayerData.job.name == "police" or Player.PlayerData.job.type == "leo") and Player.PlayerData.job.onduty then + if (Player.PlayerData.job.name == 'police' or Player.PlayerData.job.type == 'leo') and Player.PlayerData.job.onduty then secondInv.slots = Config.MaxInventorySlots else secondInv.slots = Config.MaxInventorySlots - 1 @@ -1249,7 +1249,7 @@ local function OpenInventory(name, id, other, origin) if Drops[id] and not Drops[id].isOpen then secondInv.coords = Drops[id].coords secondInv.name = id - secondInv.label = "Dropped-"..tostring(id) + secondInv.label = 'Dropped-' .. tostring(id) secondInv.maxweight = 100000 secondInv.inventory = Drops[id].items secondInv.slots = 30 @@ -1257,51 +1257,51 @@ local function OpenInventory(name, id, other, origin) Drops[id].label = secondInv.label Drops[id].createdTime = os.time() else - secondInv.name = "none-inv" - secondInv.label = "Dropped-None" + secondInv.name = 'none-inv' + secondInv.label = 'Dropped-None' secondInv.maxweight = 100000 secondInv.inventory = {} secondInv.slots = 0 end end - TriggerClientEvent("qb-inventory:client:closeinv", id) - TriggerClientEvent("inventory:client:OpenInventory", src, {}, Player.PlayerData.items, secondInv) + TriggerClientEvent('qb-inventory:client:closeinv', id) + TriggerClientEvent('inventory:client:OpenInventory', src, {}, Player.PlayerData.items, secondInv) else - TriggerClientEvent("inventory:client:OpenInventory", src, {}, Player.PlayerData.items) + TriggerClientEvent('inventory:client:OpenInventory', src, {}, Player.PlayerData.items) end end -exports('OpenInventory',OpenInventory) +exports('OpenInventory', OpenInventory) --#endregion Functions --#region Events AddEventHandler('QBCore:Server:PlayerLoaded', function(Player) - QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, "AddItem", function(item, amount, slot, info) + QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, 'AddItem', function(item, amount, slot, info) return AddItem(Player.PlayerData.source, item, amount, slot, info) end) - QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, "RemoveItem", function(item, amount, slot) + QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, 'RemoveItem', function(item, amount, slot) return RemoveItem(Player.PlayerData.source, item, amount, slot) end) - QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, "GetItemBySlot", function(slot) + QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, 'GetItemBySlot', function(slot) return GetItemBySlot(Player.PlayerData.source, slot) end) - QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, "GetItemByName", function(item) + QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, 'GetItemByName', function(item) return GetItemByName(Player.PlayerData.source, item) end) - QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, "GetItemsByName", function(item) + QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, 'GetItemsByName', function(item) return GetItemsByName(Player.PlayerData.source, item) end) - QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, "ClearInventory", function(filterItems) + QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, 'ClearInventory', function(filterItems) ClearInventory(Player.PlayerData.source, filterItems) end) - QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, "SetInventory", function(items) + QBCore.Functions.AddPlayerMethod(Player.PlayerData.source, 'SetInventory', function(items) SetInventory(Player.PlayerData.source, items) end) end) @@ -1310,39 +1310,39 @@ AddEventHandler('onResourceStart', function(resourceName) if resourceName ~= GetCurrentResourceName() then return end local Players = QBCore.Functions.GetQBPlayers() for k in pairs(Players) do - QBCore.Functions.AddPlayerMethod(k, "AddItem", function(item, amount, slot, info) + QBCore.Functions.AddPlayerMethod(k, 'AddItem', function(item, amount, slot, info) return AddItem(k, item, amount, slot, info) end) - QBCore.Functions.AddPlayerMethod(k, "RemoveItem", function(item, amount, slot) + QBCore.Functions.AddPlayerMethod(k, 'RemoveItem', function(item, amount, slot) return RemoveItem(k, item, amount, slot) end) - QBCore.Functions.AddPlayerMethod(k, "GetItemBySlot", function(slot) + QBCore.Functions.AddPlayerMethod(k, 'GetItemBySlot', function(slot) return GetItemBySlot(k, slot) end) - QBCore.Functions.AddPlayerMethod(k, "GetItemByName", function(item) + QBCore.Functions.AddPlayerMethod(k, 'GetItemByName', function(item) return GetItemByName(k, item) end) - QBCore.Functions.AddPlayerMethod(k, "GetItemsByName", function(item) + QBCore.Functions.AddPlayerMethod(k, 'GetItemsByName', function(item) return GetItemsByName(k, item) end) - QBCore.Functions.AddPlayerMethod(k, "ClearInventory", function(filterItems) + QBCore.Functions.AddPlayerMethod(k, 'ClearInventory', function(filterItems) ClearInventory(k, filterItems) end) - QBCore.Functions.AddPlayerMethod(k, "SetInventory", function(items) + QBCore.Functions.AddPlayerMethod(k, 'SetInventory', function(items) SetInventory(k, items) end) end end) RegisterNetEvent('QBCore:Server:UpdateObject', function() - if source ~= '' then return end -- Safety check if the event was not called from the server. - QBCore = exports['qb-core']:GetCoreObject() + if source ~= '' then return end -- Safety check if the event was not called from the server. + QBCore = exports['qb-core']:GetCoreObject() end) function addTrunkItems(plate, items) @@ -1356,21 +1356,22 @@ function addGloveboxItems(plate, items) Gloveboxes[plate] = {} Gloveboxes[plate].items = items end -exports('addGloveboxItems',addGloveboxItems) + +exports('addGloveboxItems', addGloveboxItems) RegisterNetEvent('inventory:server:combineItem', function(item, fromItem, toItem) local src = source -- Check that inputs are not nil -- Most commonly when abusing this exploit, this values are left as - if fromItem == nil then return end + if fromItem == nil then return end if toItem == nil then return end -- Check that they have the items fromItem = GetItemByName(src, fromItem) toItem = GetItemByName(src, toItem) - if fromItem == nil then return end + if fromItem == nil then return end if toItem == nil then return end -- Check the recipe is valid @@ -1394,11 +1395,11 @@ RegisterNetEvent('inventory:server:CraftItems', function(itemName, itemCosts, am if not itemName or not itemCosts then return end for k, v in pairs(itemCosts) do - RemoveItem(src, k, (v*amount)) + RemoveItem(src, k, (v * amount)) end AddItem(src, itemName, amount, toSlot) - Player.Functions.SetMetaData("craftingrep", Player.PlayerData.metadata["craftingrep"] + (points * amount)) - TriggerClientEvent("inventory:client:UpdatePlayerInventory", src, false) + Player.Functions.SetMetaData('craftingrep', Player.PlayerData.metadata['craftingrep'] + (points * amount)) + TriggerClientEvent('inventory:client:UpdatePlayerInventory', src, false) end) RegisterNetEvent('inventory:server:CraftAttachment', function(itemName, itemCosts, amount, toSlot, points) @@ -1410,38 +1411,38 @@ RegisterNetEvent('inventory:server:CraftAttachment', function(itemName, itemCost if not itemName or not itemCosts then return end for k, v in pairs(itemCosts) do - RemoveItem(src, k, (v*amount)) + RemoveItem(src, k, (v * amount)) end AddItem(src, itemName, amount, toSlot) - Player.Functions.SetMetaData("attachmentcraftingrep", Player.PlayerData.metadata["attachmentcraftingrep"] + (points * amount)) - TriggerClientEvent("inventory:client:UpdatePlayerInventory", src, false) + Player.Functions.SetMetaData('attachmentcraftingrep', Player.PlayerData.metadata['attachmentcraftingrep'] + (points * amount)) + TriggerClientEvent('inventory:client:UpdatePlayerInventory', src, false) end) RegisterNetEvent('inventory:server:SetIsOpenState', function(IsOpen, type, id) if IsOpen then return end - if type == "stash" then + if type == 'stash' then Stashes[id].isOpen = false - elseif type == "trunk" then + elseif type == 'trunk' then Trunks[id].isOpen = false - elseif type == "glovebox" then + elseif type == 'glovebox' then Gloveboxes[id].isOpen = false - elseif type == "drop" then + elseif type == 'drop' then Drops[id].isOpen = false end end) RegisterNetEvent('inventory:server:OpenInventory', function(name, id, other) --- print('inventory:server:OpenInventory is deprecated use exports[\'qb-inventory\']:OpenInventory() instead.') + -- print('inventory:server:OpenInventory is deprecated use exports[\'qb-inventory\']:OpenInventory() instead.') local src = source local ply = Player(src) local Player = QBCore.Functions.GetPlayer(src) if ply.state.inv_busy then - return QBCore.Functions.Notify(src, Lang:t("notify.noaccess"), 'error') + return QBCore.Functions.Notify(src, Lang:t('notify.noaccess'), 'error') end if name and id then local secondInv = {} - if name == "stash" then + if name == 'stash' then if Stashes[id] then if Stashes[id].isOpen then local Target = QBCore.Functions.GetPlayer(Stashes[id].isOpen) @@ -1458,14 +1459,14 @@ RegisterNetEvent('inventory:server:OpenInventory', function(name, id, other) maxweight = other.maxweight or 1000000 slots = other.slots or 50 end - secondInv.name = "stash-"..id - secondInv.label = "Stash-"..id + secondInv.name = 'stash-' .. id + secondInv.label = 'Stash-' .. id secondInv.maxweight = maxweight secondInv.inventory = {} secondInv.slots = slots if Stashes[id] and Stashes[id].isOpen then - secondInv.name = "none-inv" - secondInv.label = "Stash-None" + secondInv.name = 'none-inv' + secondInv.label = 'Stash-None' secondInv.maxweight = 1000000 secondInv.inventory = {} secondInv.slots = 0 @@ -1484,7 +1485,7 @@ RegisterNetEvent('inventory:server:OpenInventory', function(name, id, other) Stashes[id].label = secondInv.label end end - elseif name == "trunk" then + elseif name == 'trunk' then if Trunks[id] then if Trunks[id].isOpen then local Target = QBCore.Functions.GetPlayer(Trunks[id].isOpen) @@ -1495,14 +1496,14 @@ RegisterNetEvent('inventory:server:OpenInventory', function(name, id, other) end end end - secondInv.name = "trunk-"..id - secondInv.label = "Trunk-"..id + secondInv.name = 'trunk-' .. id + secondInv.label = 'Trunk-' .. id secondInv.maxweight = other.maxweight or 60000 secondInv.inventory = {} secondInv.slots = other.slots or 50 - if (Trunks[id] and Trunks[id].isOpen) or (QBCore.Shared.SplitStr(id, "PLZI")[2] and (Player.PlayerData.job.name ~= "police" or Player.PlayerData.job.type ~= "leo")) then - secondInv.name = "none-inv" - secondInv.label = "Trunk-None" + if (Trunks[id] and Trunks[id].isOpen) or (QBCore.Shared.SplitStr(id, 'PLZI')[2] and (Player.PlayerData.job.name ~= 'police' or Player.PlayerData.job.type ~= 'leo')) then + secondInv.name = 'none-inv' + secondInv.label = 'Trunk-None' secondInv.maxweight = other.maxweight or 60000 secondInv.inventory = {} secondInv.slots = 0 @@ -1527,7 +1528,7 @@ RegisterNetEvent('inventory:server:OpenInventory', function(name, id, other) end end end - elseif name == "glovebox" then + elseif name == 'glovebox' then if Gloveboxes[id] then if Gloveboxes[id].isOpen then local Target = QBCore.Functions.GetPlayer(Gloveboxes[id].isOpen) @@ -1538,14 +1539,14 @@ RegisterNetEvent('inventory:server:OpenInventory', function(name, id, other) end end end - secondInv.name = "glovebox-"..id - secondInv.label = "Glovebox-"..id + secondInv.name = 'glovebox-' .. id + secondInv.label = 'Glovebox-' .. id secondInv.maxweight = 10000 secondInv.inventory = {} secondInv.slots = 5 if Gloveboxes[id] and Gloveboxes[id].isOpen then - secondInv.name = "none-inv" - secondInv.label = "Glovebox-None" + secondInv.name = 'none-inv' + secondInv.label = 'Glovebox-None' secondInv.maxweight = 10000 secondInv.inventory = {} secondInv.slots = 0 @@ -1568,40 +1569,40 @@ RegisterNetEvent('inventory:server:OpenInventory', function(name, id, other) Gloveboxes[id].label = secondInv.label end end - elseif name == "shop" then - secondInv.name = "itemshop-"..id + elseif name == 'shop' then + secondInv.name = 'itemshop-' .. id secondInv.label = other.label secondInv.maxweight = 900000 secondInv.inventory = SetupShopItems(other.items) ShopItems[id] = {} ShopItems[id].items = other.items secondInv.slots = #other.items - elseif name == "traphouse" then - secondInv.name = "traphouse-"..id + elseif name == 'traphouse' then + secondInv.name = 'traphouse-' .. id secondInv.label = other.label secondInv.maxweight = 900000 secondInv.inventory = other.items secondInv.slots = other.slots - elseif name == "crafting" then - secondInv.name = "crafting" + elseif name == 'crafting' then + secondInv.name = 'crafting' secondInv.label = other.label secondInv.maxweight = 900000 secondInv.inventory = other.items secondInv.slots = #other.items - elseif name == "attachment_crafting" then - secondInv.name = "attachment_crafting" + elseif name == 'attachment_crafting' then + secondInv.name = 'attachment_crafting' secondInv.label = other.label secondInv.maxweight = 900000 secondInv.inventory = other.items secondInv.slots = #other.items - elseif name == "otherplayer" then + elseif name == 'otherplayer' then local OtherPlayer = QBCore.Functions.GetPlayer(tonumber(id)) if OtherPlayer then - secondInv.name = "otherplayer-"..id - secondInv.label = "Player-"..id + secondInv.name = 'otherplayer-' .. id + secondInv.label = 'Player-' .. id secondInv.maxweight = Config.MaxInventoryWeight secondInv.inventory = OtherPlayer.PlayerData.items - if (Player.PlayerData.job.name == "police" or Player.PlayerData.job.type == "leo") and Player.PlayerData.job.onduty then + if (Player.PlayerData.job.name == 'police' or Player.PlayerData.job.type == 'leo') and Player.PlayerData.job.onduty then secondInv.slots = Config.MaxInventorySlots else secondInv.slots = Config.MaxInventorySlots - 1 @@ -1622,7 +1623,7 @@ RegisterNetEvent('inventory:server:OpenInventory', function(name, id, other) if Drops[id] and not Drops[id].isOpen then secondInv.coords = Drops[id].coords secondInv.name = id - secondInv.label = "Dropped-"..tostring(id) + secondInv.label = 'Dropped-' .. tostring(id) secondInv.maxweight = 100000 secondInv.inventory = Drops[id].items secondInv.slots = 30 @@ -1630,42 +1631,42 @@ RegisterNetEvent('inventory:server:OpenInventory', function(name, id, other) Drops[id].label = secondInv.label Drops[id].createdTime = os.time() else - secondInv.name = "none-inv" - secondInv.label = "Dropped-None" + secondInv.name = 'none-inv' + secondInv.label = 'Dropped-None' secondInv.maxweight = 100000 secondInv.inventory = {} secondInv.slots = 0 end end - TriggerClientEvent("qb-inventory:client:closeinv", id) + TriggerClientEvent('qb-inventory:client:closeinv', id) Wait(0) - TriggerClientEvent("inventory:client:OpenInventory", src, {}, Player.PlayerData.items, secondInv) + TriggerClientEvent('inventory:client:OpenInventory', src, {}, Player.PlayerData.items, secondInv) else - TriggerClientEvent("inventory:client:OpenInventory", src, {}, Player.PlayerData.items) + TriggerClientEvent('inventory:client:OpenInventory', src, {}, Player.PlayerData.items) end end) RegisterNetEvent('inventory:server:SaveInventory', function(type, id) - if type == "trunk" then + if type == 'trunk' then if IsVehicleOwned(id) then SaveOwnedVehicleItems(id, Trunks[id].items) else Trunks[id].isOpen = false end - elseif type == "glovebox" then + elseif type == 'glovebox' then if (IsVehicleOwned(id)) then SaveOwnedGloveboxItems(id, Gloveboxes[id].items) else Gloveboxes[id].isOpen = false end - elseif type == "stash" then + elseif type == 'stash' then SaveStashItems(id, Stashes[id].items) - elseif type == "drop" then + elseif type == 'drop' then if Drops[id] then Drops[id].isOpen = false if Drops[id].items == nil or next(Drops[id].items) == nil then Drops[id] = nil - TriggerClientEvent("inventory:client:RemoveDropItem", -1, id) + TriggerClientEvent('inventory:client:RemoveDropItem', -1, id) end end end @@ -1676,27 +1677,27 @@ RegisterNetEvent('inventory:server:UseItemSlot', function(slot) local itemData = GetItemBySlot(src, slot) if not itemData then return end local itemInfo = QBCore.Shared.Items[itemData.name] - if itemData.type == "weapon" then - TriggerClientEvent("inventory:client:UseWeapon", src, itemData, itemData.info.quality and itemData.info.quality > 0) - TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, "use") + if itemData.type == 'weapon' then + TriggerClientEvent('inventory:client:UseWeapon', src, itemData, itemData.info.quality and itemData.info.quality > 0) + TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, 'use') elseif itemData.useable then UseItem(itemData.name, src, itemData) - TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, "use") + TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, 'use') end end) RegisterNetEvent('inventory:server:UseItem', function(inventory, item) local src = source - if inventory ~= "player" and inventory ~= "hotbar" then return end + if inventory ~= 'player' and inventory ~= 'hotbar' then return end local itemData = GetItemBySlot(src, item.slot) if not itemData then return end local itemInfo = QBCore.Shared.Items[itemData.name] - if itemData.type == "weapon" then - TriggerClientEvent("inventory:client:UseWeapon", src, itemData, itemData.info.quality and itemData.info.quality > 0) - TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, "use") + if itemData.type == 'weapon' then + TriggerClientEvent('inventory:client:UseWeapon', src, itemData, itemData.info.quality and itemData.info.quality > 0) + TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, 'use') else UseItem(itemData.name, src, itemData) - TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, "use") + TriggerClientEvent('inventory:client:ItemBox', src, itemInfo, 'use') end end) @@ -1706,18 +1707,18 @@ RegisterNetEvent('inventory:server:SetInventoryData', function(fromInventory, to fromSlot = tonumber(fromSlot) toSlot = tonumber(toSlot) - if (fromInventory == "player" or fromInventory == "hotbar") and (QBCore.Shared.SplitStr(toInventory, "-")[1] == "itemshop" or toInventory == "crafting") then + if (fromInventory == 'player' or fromInventory == 'hotbar') and (QBCore.Shared.SplitStr(toInventory, '-')[1] == 'itemshop' or toInventory == 'crafting') then return end - if fromInventory == "player" or fromInventory == "hotbar" then + if fromInventory == 'player' or fromInventory == 'hotbar' then local fromItemData = GetItemBySlot(src, fromSlot) fromAmount = tonumber(fromAmount) or fromItemData.amount if fromItemData and fromItemData.amount >= fromAmount then - if toInventory == "player" or toInventory == "hotbar" then + if toInventory == 'player' or toInventory == 'hotbar' then local toItemData = GetItemBySlot(src, toSlot) RemoveItem(src, fromItemData.name, fromAmount, fromSlot) - TriggerClientEvent("inventory:client:CheckWeapon", src, fromItemData.name) + TriggerClientEvent('inventory:client:CheckWeapon', src, fromItemData.name) --Player.PlayerData.items[toSlot] = fromItemData if toItemData then --Player.PlayerData.items[fromSlot] = toItemData @@ -1728,75 +1729,75 @@ RegisterNetEvent('inventory:server:SetInventoryData', function(fromInventory, to end end AddItem(src, fromItemData.name, fromAmount, toSlot, fromItemData.info) - elseif QBCore.Shared.SplitStr(toInventory, "-")[1] == "otherplayer" then - local playerId = tonumber(QBCore.Shared.SplitStr(toInventory, "-")[2]) + elseif QBCore.Shared.SplitStr(toInventory, '-')[1] == 'otherplayer' then + local playerId = tonumber(QBCore.Shared.SplitStr(toInventory, '-')[2]) local OtherPlayer = QBCore.Functions.GetPlayer(playerId) local toItemData = OtherPlayer.PlayerData.items[toSlot] RemoveItem(src, fromItemData.name, fromAmount, fromSlot) - TriggerClientEvent("inventory:client:CheckWeapon", src, fromItemData.name) + TriggerClientEvent('inventory:client:CheckWeapon', src, fromItemData.name) --Player.PlayerData.items[toSlot] = fromItemData if toItemData then --Player.PlayerData.items[fromSlot] = toItemData local itemInfo = QBCore.Shared.Items[toItemData.name:lower()] toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then - RemoveItem(playerId, itemInfo["name"], toAmount, fromSlot) + RemoveItem(playerId, itemInfo['name'], toAmount, fromSlot) AddItem(src, toItemData.name, toAmount, fromSlot, toItemData.info) - TriggerEvent("qb-log:server:CreateLog", "robbing", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | *"..src.."*) swapped item; name: **"..itemInfo["name"].."**, amount: **" .. toAmount .. "** with name: **" .. fromItemData.name .. "**, amount: **" .. fromAmount.. "** with player: **".. GetPlayerName(OtherPlayer.PlayerData.source) .. "** (citizenid: *"..OtherPlayer.PlayerData.citizenid.."* | id: *"..OtherPlayer.PlayerData.source.."*)") + TriggerEvent('qb-log:server:CreateLog', 'robbing', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | *' .. src .. '*) swapped item; name: **' .. itemInfo['name'] .. '**, amount: **' .. toAmount .. '** with name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** with player: **' .. GetPlayerName(OtherPlayer.PlayerData.source) .. '** (citizenid: *' .. OtherPlayer.PlayerData.citizenid .. '* | id: *' .. OtherPlayer.PlayerData.source .. '*)') end else local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - TriggerEvent("qb-log:server:CreateLog", "robbing", "Dropped Item", "red", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | *"..src.."*) dropped new item; name: **"..itemInfo["name"].."**, amount: **" .. fromAmount .. "** to player: **".. GetPlayerName(OtherPlayer.PlayerData.source) .. "** (citizenid: *"..OtherPlayer.PlayerData.citizenid.."* | id: *"..OtherPlayer.PlayerData.source.."*)") + TriggerEvent('qb-log:server:CreateLog', 'robbing', 'Dropped Item', 'red', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | *' .. src .. '*) dropped new item; name: **' .. itemInfo['name'] .. '**, amount: **' .. fromAmount .. '** to player: **' .. GetPlayerName(OtherPlayer.PlayerData.source) .. '** (citizenid: *' .. OtherPlayer.PlayerData.citizenid .. '* | id: *' .. OtherPlayer.PlayerData.source .. '*)') end local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - AddItem(playerId, itemInfo["name"], fromAmount, toSlot, fromItemData.info) - elseif QBCore.Shared.SplitStr(toInventory, "-")[1] == "trunk" then - local plate = QBCore.Shared.SplitStr(toInventory, "-")[2] + AddItem(playerId, itemInfo['name'], fromAmount, toSlot, fromItemData.info) + elseif QBCore.Shared.SplitStr(toInventory, '-')[1] == 'trunk' then + local plate = QBCore.Shared.SplitStr(toInventory, '-')[2] local toItemData = Trunks[plate].items[toSlot] RemoveItem(src, fromItemData.name, fromAmount, fromSlot) - TriggerClientEvent("inventory:client:CheckWeapon", src, fromItemData.name) + TriggerClientEvent('inventory:client:CheckWeapon', src, fromItemData.name) --Player.PlayerData.items[toSlot] = fromItemData if toItemData then --Player.PlayerData.items[fromSlot] = toItemData local itemInfo = QBCore.Shared.Items[toItemData.name:lower()] toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then - RemoveFromTrunk(plate, fromSlot, itemInfo["name"], toAmount) + RemoveFromTrunk(plate, fromSlot, itemInfo['name'], toAmount) AddItem(src, toItemData.name, toAmount, fromSlot, toItemData.info) - TriggerEvent("qb-log:server:CreateLog", "trunk", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) swapped item; name: **"..itemInfo["name"].."**, amount: **" .. toAmount .. "** with name: **" .. fromItemData.name .. "**, amount: **" .. fromAmount .. "** - plate: *" .. plate .. "*") + TriggerEvent('qb-log:server:CreateLog', 'trunk', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) swapped item; name: **' .. itemInfo['name'] .. '**, amount: **' .. toAmount .. '** with name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** - plate: *' .. plate .. '*') end else local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - TriggerEvent("qb-log:server:CreateLog", "trunk", "Dropped Item", "red", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) dropped new item; name: **"..itemInfo["name"].."**, amount: **" .. fromAmount .. "** - plate: *" .. plate .. "*") + TriggerEvent('qb-log:server:CreateLog', 'trunk', 'Dropped Item', 'red', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) dropped new item; name: **' .. itemInfo['name'] .. '**, amount: **' .. fromAmount .. '** - plate: *' .. plate .. '*') end local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - AddToTrunk(plate, toSlot, fromSlot, itemInfo["name"], fromAmount, fromItemData.info) - elseif QBCore.Shared.SplitStr(toInventory, "-")[1] == "glovebox" then - local plate = QBCore.Shared.SplitStr(toInventory, "-")[2] + AddToTrunk(plate, toSlot, fromSlot, itemInfo['name'], fromAmount, fromItemData.info) + elseif QBCore.Shared.SplitStr(toInventory, '-')[1] == 'glovebox' then + local plate = QBCore.Shared.SplitStr(toInventory, '-')[2] local toItemData = Gloveboxes[plate].items[toSlot] RemoveItem(src, fromItemData.name, fromAmount, fromSlot) - TriggerClientEvent("inventory:client:CheckWeapon", src, fromItemData.name) + TriggerClientEvent('inventory:client:CheckWeapon', src, fromItemData.name) --Player.PlayerData.items[toSlot] = fromItemData if toItemData then --Player.PlayerData.items[fromSlot] = toItemData local itemInfo = QBCore.Shared.Items[toItemData.name:lower()] toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then - RemoveFromGlovebox(plate, fromSlot, itemInfo["name"], toAmount) + RemoveFromGlovebox(plate, fromSlot, itemInfo['name'], toAmount) AddItem(src, toItemData.name, toAmount, fromSlot, toItemData.info) - TriggerEvent("qb-log:server:CreateLog", "glovebox", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) swapped item; name: **"..itemInfo["name"].."**, amount: **" .. toAmount .. "** with name: **" .. fromItemData.name .. "**, amount: **" .. fromAmount .. "** - plate: *" .. plate .. "*") + TriggerEvent('qb-log:server:CreateLog', 'glovebox', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) swapped item; name: **' .. itemInfo['name'] .. '**, amount: **' .. toAmount .. '** with name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** - plate: *' .. plate .. '*') end else local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - TriggerEvent("qb-log:server:CreateLog", "glovebox", "Dropped Item", "red", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) dropped new item; name: **"..itemInfo["name"].."**, amount: **" .. fromAmount .. "** - plate: *" .. plate .. "*") + TriggerEvent('qb-log:server:CreateLog', 'glovebox', 'Dropped Item', 'red', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) dropped new item; name: **' .. itemInfo['name'] .. '**, amount: **' .. fromAmount .. '** - plate: *' .. plate .. '*') end local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - AddToGlovebox(plate, toSlot, fromSlot, itemInfo["name"], fromAmount, fromItemData.info) - elseif QBCore.Shared.SplitStr(toInventory, "-")[1] == "stash" then - local stashId = QBCore.Shared.SplitStr(toInventory, "-")[2] + AddToGlovebox(plate, toSlot, fromSlot, itemInfo['name'], fromAmount, fromItemData.info) + elseif QBCore.Shared.SplitStr(toInventory, '-')[1] == 'stash' then + local stashId = QBCore.Shared.SplitStr(toInventory, '-')[2] local toItemData = Stashes[stashId].items[toSlot] RemoveItem(src, fromItemData.name, fromAmount, fromSlot) - TriggerClientEvent("inventory:client:CheckWeapon", src, fromItemData.name) + TriggerClientEvent('inventory:client:CheckWeapon', src, fromItemData.name) --Player.PlayerData.items[toSlot] = fromItemData if toItemData then --Player.PlayerData.items[fromSlot] = toItemData @@ -1804,40 +1805,40 @@ RegisterNetEvent('inventory:server:SetInventoryData', function(fromInventory, to toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then --RemoveFromStash(stashId, fromSlot, itemInfo["name"], toAmount) - RemoveFromStash(stashId, toSlot, itemInfo["name"], toAmount) + RemoveFromStash(stashId, toSlot, itemInfo['name'], toAmount) AddItem(src, toItemData.name, toAmount, fromSlot, toItemData.info) - TriggerEvent("qb-log:server:CreateLog", "stash", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) swapped item; name: **"..itemInfo["name"].."**, amount: **" .. toAmount .. "** with name: **" .. fromItemData.name .. "**, amount: **" .. fromAmount .. "** - stash: *" .. stashId .. "*") + TriggerEvent('qb-log:server:CreateLog', 'stash', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) swapped item; name: **' .. itemInfo['name'] .. '**, amount: **' .. toAmount .. '** with name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** - stash: *' .. stashId .. '*') end else local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - TriggerEvent("qb-log:server:CreateLog", "stash", "Dropped Item", "red", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) dropped new item; name: **"..itemInfo["name"].."**, amount: **" .. fromAmount .. "** - stash: *" .. stashId .. "*") + TriggerEvent('qb-log:server:CreateLog', 'stash', 'Dropped Item', 'red', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) dropped new item; name: **' .. itemInfo['name'] .. '**, amount: **' .. fromAmount .. '** - stash: *' .. stashId .. '*') end local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - AddToStash(stashId, toSlot, fromSlot, itemInfo["name"], fromAmount, fromItemData.info) - elseif QBCore.Shared.SplitStr(toInventory, "-")[1] == "traphouse" then + AddToStash(stashId, toSlot, fromSlot, itemInfo['name'], fromAmount, fromItemData.info) + elseif QBCore.Shared.SplitStr(toInventory, '-')[1] == 'traphouse' then -- Traphouse - local traphouseId = QBCore.Shared.SplitStr(toInventory, "_")[2] + local traphouseId = QBCore.Shared.SplitStr(toInventory, '_')[2] local toItemData = exports['qb-traphouse']:GetInventoryData(traphouseId, toSlot) local IsItemValid = exports['qb-traphouse']:CanItemBeSaled(fromItemData.name:lower()) if IsItemValid then RemoveItem(src, fromItemData.name, fromAmount, fromSlot) - TriggerClientEvent("inventory:client:CheckWeapon", src, fromItemData.name) - if toItemData then + TriggerClientEvent('inventory:client:CheckWeapon', src, fromItemData.name) + if toItemData then local itemInfo = QBCore.Shared.Items[toItemData.name:lower()] toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then - exports['qb-traphouse']:RemoveHouseItem(traphouseId, fromSlot, itemInfo["name"], toAmount) + exports['qb-traphouse']:RemoveHouseItem(traphouseId, fromSlot, itemInfo['name'], toAmount) AddItem(src, toItemData.name, toAmount, fromSlot, toItemData.info) - TriggerEvent("qb-log:server:CreateLog", "traphouse", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) swapped item; name: **"..itemInfo["name"].."**, amount: **" .. toAmount .. "** with name: **" .. fromItemData.name .. "**, amount: **" .. fromAmount .. "** - traphouse: *" .. traphouseId .. "*") + TriggerEvent('qb-log:server:CreateLog', 'traphouse', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) swapped item; name: **' .. itemInfo['name'] .. '**, amount: **' .. toAmount .. '** with name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** - traphouse: *' .. traphouseId .. '*') end else local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - TriggerEvent("qb-log:server:CreateLog", "traphouse", "Dropped Item", "red", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) dropped new item; name: **"..itemInfo["name"].."**, amount: **" .. fromAmount .. "** - traphouse: *" .. traphouseId .. "*") + TriggerEvent('qb-log:server:CreateLog', 'traphouse', 'Dropped Item', 'red', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) dropped new item; name: **' .. itemInfo['name'] .. '**, amount: **' .. fromAmount .. '** - traphouse: *' .. traphouseId .. '*') end local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - exports['qb-traphouse']:AddHouseItem(traphouseId, toSlot, itemInfo["name"], fromAmount, fromItemData.info, src) + exports['qb-traphouse']:AddHouseItem(traphouseId, toSlot, itemInfo['name'], fromAmount, fromItemData.info, src) else - QBCore.Functions.Notify(src, Lang:t("notify.nosell"), 'error') + QBCore.Functions.Notify(src, Lang:t('notify.nosell'), 'error') end else -- drop @@ -1847,320 +1848,320 @@ RegisterNetEvent('inventory:server:SetInventoryData', function(fromInventory, to else local toItemData = Drops[toInventory].items[toSlot] RemoveItem(src, fromItemData.name, fromAmount, fromSlot) - TriggerClientEvent("inventory:client:CheckWeapon", src, fromItemData.name) + TriggerClientEvent('inventory:client:CheckWeapon', src, fromItemData.name) if toItemData then local itemInfo = QBCore.Shared.Items[toItemData.name:lower()] toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then AddItem(src, toItemData.name, toAmount, fromSlot, toItemData.info) - RemoveFromDrop(toInventory, fromSlot, itemInfo["name"], toAmount) - TriggerEvent("qb-log:server:CreateLog", "drop", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) swapped item; name: **"..itemInfo["name"].."**, amount: **" .. toAmount .. "** with name: **" .. fromItemData.name .. "**, amount: **" .. fromAmount .. "** - dropid: *" .. toInventory .. "*") + RemoveFromDrop(toInventory, fromSlot, itemInfo['name'], toAmount) + TriggerEvent('qb-log:server:CreateLog', 'drop', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) swapped item; name: **' .. itemInfo['name'] .. '**, amount: **' .. toAmount .. '** with name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** - dropid: *' .. toInventory .. '*') end else local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - TriggerEvent("qb-log:server:CreateLog", "drop", "Dropped Item", "red", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) dropped new item; name: **"..itemInfo["name"].."**, amount: **" .. fromAmount .. "** - dropid: *" .. toInventory .. "*") + TriggerEvent('qb-log:server:CreateLog', 'drop', 'Dropped Item', 'red', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) dropped new item; name: **' .. itemInfo['name'] .. '**, amount: **' .. fromAmount .. '** - dropid: *' .. toInventory .. '*') end local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - AddToDrop(toInventory, toSlot, itemInfo["name"], fromAmount, fromItemData.info) - if itemInfo["name"] == "radio" then + AddToDrop(toInventory, toSlot, itemInfo['name'], fromAmount, fromItemData.info) + if itemInfo['name'] == 'radio' then TriggerClientEvent('Radio.Set', src, false) end end end else - QBCore.Functions.Notify(src, Lang:t("notify.missitem"), "error") + QBCore.Functions.Notify(src, Lang:t('notify.missitem'), 'error') end - elseif QBCore.Shared.SplitStr(fromInventory, "-")[1] == "otherplayer" then - local playerId = tonumber(QBCore.Shared.SplitStr(fromInventory, "-")[2]) + elseif QBCore.Shared.SplitStr(fromInventory, '-')[1] == 'otherplayer' then + local playerId = tonumber(QBCore.Shared.SplitStr(fromInventory, '-')[2]) local OtherPlayer = QBCore.Functions.GetPlayer(playerId) local fromItemData = OtherPlayer.PlayerData.items[fromSlot] fromAmount = tonumber(fromAmount) or fromItemData.amount if fromItemData and fromItemData.amount >= fromAmount then local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - if toInventory == "player" or toInventory == "hotbar" then + if toInventory == 'player' or toInventory == 'hotbar' then local toItemData = GetItemBySlot(src, toSlot) - RemoveItem(playerId, itemInfo["name"], fromAmount, fromSlot) - TriggerClientEvent("inventory:client:CheckWeapon", OtherPlayer.PlayerData.source, fromItemData.name) + RemoveItem(playerId, itemInfo['name'], fromAmount, fromSlot) + TriggerClientEvent('inventory:client:CheckWeapon', OtherPlayer.PlayerData.source, fromItemData.name) if toItemData then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then RemoveItem(src, toItemData.name, toAmount, toSlot) - AddItem(playerId, itemInfo["name"], toAmount, fromSlot, toItemData.info) - TriggerEvent("qb-log:server:CreateLog", "robbing", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) swapped item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** with item; **"..itemInfo["name"].."**, amount: **" .. toAmount .. "** from player: **".. GetPlayerName(OtherPlayer.PlayerData.source) .. "** (citizenid: *"..OtherPlayer.PlayerData.citizenid.."* | *"..OtherPlayer.PlayerData.source.."*)") + AddItem(playerId, itemInfo['name'], toAmount, fromSlot, toItemData.info) + TriggerEvent('qb-log:server:CreateLog', 'robbing', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) swapped item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** with item; **' .. itemInfo['name'] .. '**, amount: **' .. toAmount .. '** from player: **' .. GetPlayerName(OtherPlayer.PlayerData.source) .. '** (citizenid: *' .. OtherPlayer.PlayerData.citizenid .. '* | *' .. OtherPlayer.PlayerData.source .. '*)') end else - TriggerEvent("qb-log:server:CreateLog", "robbing", "Retrieved Item", "green", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) took item; name: **"..fromItemData.name.."**, amount: **" .. fromAmount .. "** from player: **".. GetPlayerName(OtherPlayer.PlayerData.source) .. "** (citizenid: *"..OtherPlayer.PlayerData.citizenid.."* | *"..OtherPlayer.PlayerData.source.."*)") + TriggerEvent('qb-log:server:CreateLog', 'robbing', 'Retrieved Item', 'green', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) took item; name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** from player: **' .. GetPlayerName(OtherPlayer.PlayerData.source) .. '** (citizenid: *' .. OtherPlayer.PlayerData.citizenid .. '* | *' .. OtherPlayer.PlayerData.source .. '*)') end AddItem(src, fromItemData.name, fromAmount, toSlot, fromItemData.info) else local toItemData = OtherPlayer.PlayerData.items[toSlot] - RemoveItem(playerId, itemInfo["name"], fromAmount, fromSlot) + RemoveItem(playerId, itemInfo['name'], fromAmount, fromSlot) --Player.PlayerData.items[toSlot] = fromItemData if toItemData then --Player.PlayerData.items[fromSlot] = toItemData toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] - RemoveItem(playerId, itemInfo["name"], toAmount, toSlot) - AddItem(playerId, itemInfo["name"], toAmount, fromSlot, toItemData.info) + RemoveItem(playerId, itemInfo['name'], toAmount, toSlot) + AddItem(playerId, itemInfo['name'], toAmount, fromSlot, toItemData.info) end end itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - AddItem(playerId, itemInfo["name"], fromAmount, toSlot, fromItemData.info) + AddItem(playerId, itemInfo['name'], fromAmount, toSlot, fromItemData.info) end else - QBCore.Functions.Notify(src, Lang:t("notify.itemexist"), "error") + QBCore.Functions.Notify(src, Lang:t('notify.itemexist'), 'error') end - elseif QBCore.Shared.SplitStr(fromInventory, "-")[1] == "trunk" then - local plate = QBCore.Shared.SplitStr(fromInventory, "-")[2] + elseif QBCore.Shared.SplitStr(fromInventory, '-')[1] == 'trunk' then + local plate = QBCore.Shared.SplitStr(fromInventory, '-')[2] local fromItemData = Trunks[plate].items[fromSlot] fromAmount = tonumber(fromAmount) or fromItemData.amount if fromItemData and fromItemData.amount >= fromAmount then local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - if toInventory == "player" or toInventory == "hotbar" then + if toInventory == 'player' or toInventory == 'hotbar' then local toItemData = GetItemBySlot(src, toSlot) - RemoveFromTrunk(plate, fromSlot, itemInfo["name"], fromAmount) + RemoveFromTrunk(plate, fromSlot, itemInfo['name'], fromAmount) if toItemData then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then RemoveItem(src, toItemData.name, toAmount, toSlot) - AddToTrunk(plate, fromSlot, toSlot, itemInfo["name"], toAmount, toItemData.info) - TriggerEvent("qb-log:server:CreateLog", "trunk", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) swapped item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** with item; name: **"..itemInfo["name"].."**, amount: **" .. toAmount .. "** plate: *" .. plate .. "*") + AddToTrunk(plate, fromSlot, toSlot, itemInfo['name'], toAmount, toItemData.info) + TriggerEvent('qb-log:server:CreateLog', 'trunk', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) swapped item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** with item; name: **' .. itemInfo['name'] .. '**, amount: **' .. toAmount .. '** plate: *' .. plate .. '*') else - TriggerEvent("qb-log:server:CreateLog", "trunk", "Stacked Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) stacked item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** from plate: *" .. plate .. "*") + TriggerEvent('qb-log:server:CreateLog', 'trunk', 'Stacked Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) stacked item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** from plate: *' .. plate .. '*') end else - TriggerEvent("qb-log:server:CreateLog", "trunk", "Received Item", "green", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) received item; name: **"..fromItemData.name.."**, amount: **" .. fromAmount.. "** plate: *" .. plate .. "*") + TriggerEvent('qb-log:server:CreateLog', 'trunk', 'Received Item', 'green', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) received item; name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** plate: *' .. plate .. '*') end AddItem(src, fromItemData.name, fromAmount, toSlot, fromItemData.info) else local toItemData = Trunks[plate].items[toSlot] - RemoveFromTrunk(plate, fromSlot, itemInfo["name"], fromAmount) + RemoveFromTrunk(plate, fromSlot, itemInfo['name'], fromAmount) --Player.PlayerData.items[toSlot] = fromItemData if toItemData then --Player.PlayerData.items[fromSlot] = toItemData toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] - RemoveFromTrunk(plate, toSlot, itemInfo["name"], toAmount) - AddToTrunk(plate, fromSlot, toSlot, itemInfo["name"], toAmount, toItemData.info) + RemoveFromTrunk(plate, toSlot, itemInfo['name'], toAmount) + AddToTrunk(plate, fromSlot, toSlot, itemInfo['name'], toAmount, toItemData.info) end end itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - AddToTrunk(plate, toSlot, fromSlot, itemInfo["name"], fromAmount, fromItemData.info) + AddToTrunk(plate, toSlot, fromSlot, itemInfo['name'], fromAmount, fromItemData.info) end else - QBCore.Functions.Notify(src, Lang:t("notify.itemexist"), "error") + QBCore.Functions.Notify(src, Lang:t('notify.itemexist'), 'error') end - elseif QBCore.Shared.SplitStr(fromInventory, "-")[1] == "glovebox" then - local plate = QBCore.Shared.SplitStr(fromInventory, "-")[2] + elseif QBCore.Shared.SplitStr(fromInventory, '-')[1] == 'glovebox' then + local plate = QBCore.Shared.SplitStr(fromInventory, '-')[2] local fromItemData = Gloveboxes[plate].items[fromSlot] fromAmount = tonumber(fromAmount) or fromItemData.amount if fromItemData and fromItemData.amount >= fromAmount then local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - if toInventory == "player" or toInventory == "hotbar" then + if toInventory == 'player' or toInventory == 'hotbar' then local toItemData = GetItemBySlot(src, toSlot) - RemoveFromGlovebox(plate, fromSlot, itemInfo["name"], fromAmount) + RemoveFromGlovebox(plate, fromSlot, itemInfo['name'], fromAmount) if toItemData then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then RemoveItem(src, toItemData.name, toAmount, toSlot) - AddToGlovebox(plate, fromSlot, toSlot, itemInfo["name"], toAmount, toItemData.info) - TriggerEvent("qb-log:server:CreateLog", "glovebox", "Swapped", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src..")* swapped item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** with item; name: **"..itemInfo["name"].."**, amount: **" .. toAmount .. "** plate: *" .. plate .. "*") + AddToGlovebox(plate, fromSlot, toSlot, itemInfo['name'], toAmount, toItemData.info) + TriggerEvent('qb-log:server:CreateLog', 'glovebox', 'Swapped', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. ')* swapped item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** with item; name: **' .. itemInfo['name'] .. '**, amount: **' .. toAmount .. '** plate: *' .. plate .. '*') else - TriggerEvent("qb-log:server:CreateLog", "glovebox", "Stacked Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) stacked item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** from plate: *" .. plate .. "*") + TriggerEvent('qb-log:server:CreateLog', 'glovebox', 'Stacked Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) stacked item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** from plate: *' .. plate .. '*') end else - TriggerEvent("qb-log:server:CreateLog", "glovebox", "Received Item", "green", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) received item; name: **"..fromItemData.name.."**, amount: **" .. fromAmount.. "** plate: *" .. plate .. "*") + TriggerEvent('qb-log:server:CreateLog', 'glovebox', 'Received Item', 'green', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) received item; name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** plate: *' .. plate .. '*') end AddItem(src, fromItemData.name, fromAmount, toSlot, fromItemData.info) else local toItemData = Gloveboxes[plate].items[toSlot] - RemoveFromGlovebox(plate, fromSlot, itemInfo["name"], fromAmount) + RemoveFromGlovebox(plate, fromSlot, itemInfo['name'], fromAmount) --Player.PlayerData.items[toSlot] = fromItemData if toItemData then --Player.PlayerData.items[fromSlot] = toItemData toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] - RemoveFromGlovebox(plate, toSlot, itemInfo["name"], toAmount) - AddToGlovebox(plate, fromSlot, toSlot, itemInfo["name"], toAmount, toItemData.info) + RemoveFromGlovebox(plate, toSlot, itemInfo['name'], toAmount) + AddToGlovebox(plate, fromSlot, toSlot, itemInfo['name'], toAmount, toItemData.info) end end itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - AddToGlovebox(plate, toSlot, fromSlot, itemInfo["name"], fromAmount, fromItemData.info) + AddToGlovebox(plate, toSlot, fromSlot, itemInfo['name'], fromAmount, fromItemData.info) end else - QBCore.Functions.Notify(src, Lang:t("notify.itemexist"), "error") + QBCore.Functions.Notify(src, Lang:t('notify.itemexist'), 'error') end - elseif QBCore.Shared.SplitStr(fromInventory, "-")[1] == "stash" then - local stashId = QBCore.Shared.SplitStr(fromInventory, "-")[2] + elseif QBCore.Shared.SplitStr(fromInventory, '-')[1] == 'stash' then + local stashId = QBCore.Shared.SplitStr(fromInventory, '-')[2] local fromItemData = Stashes[stashId].items[fromSlot] fromAmount = tonumber(fromAmount) or fromItemData.amount if fromItemData and fromItemData.amount >= fromAmount then local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - if toInventory == "player" or toInventory == "hotbar" then + if toInventory == 'player' or toInventory == 'hotbar' then local toItemData = GetItemBySlot(src, toSlot) - RemoveFromStash(stashId, fromSlot, itemInfo["name"], fromAmount) + RemoveFromStash(stashId, fromSlot, itemInfo['name'], fromAmount) if toItemData then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then RemoveItem(src, toItemData.name, toAmount, toSlot) - AddToStash(stashId, fromSlot, toSlot, itemInfo["name"], toAmount, toItemData.info) - TriggerEvent("qb-log:server:CreateLog", "stash", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) swapped item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** with item; name: **"..fromItemData.name.."**, amount: **" .. fromAmount .. "** stash: *" .. stashId .. "*") + AddToStash(stashId, fromSlot, toSlot, itemInfo['name'], toAmount, toItemData.info) + TriggerEvent('qb-log:server:CreateLog', 'stash', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) swapped item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** with item; name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** stash: *' .. stashId .. '*') else - TriggerEvent("qb-log:server:CreateLog", "stash", "Stacked Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) stacked item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** from stash: *" .. stashId .. "*") + TriggerEvent('qb-log:server:CreateLog', 'stash', 'Stacked Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) stacked item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** from stash: *' .. stashId .. '*') end else - TriggerEvent("qb-log:server:CreateLog", "stash", "Received Item", "green", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) received item; name: **"..fromItemData.name.."**, amount: **" .. fromAmount.. "** stash: *" .. stashId .. "*") + TriggerEvent('qb-log:server:CreateLog', 'stash', 'Received Item', 'green', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) received item; name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** stash: *' .. stashId .. '*') end SaveStashItems(stashId, Stashes[stashId].items) AddItem(src, fromItemData.name, fromAmount, toSlot, fromItemData.info) else local toItemData = Stashes[stashId].items[toSlot] - RemoveFromStash(stashId, fromSlot, itemInfo["name"], fromAmount) + RemoveFromStash(stashId, fromSlot, itemInfo['name'], fromAmount) --Player.PlayerData.items[toSlot] = fromItemData if toItemData then --Player.PlayerData.items[fromSlot] = toItemData toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] - RemoveFromStash(stashId, toSlot, itemInfo["name"], toAmount) - AddToStash(stashId, fromSlot, toSlot, itemInfo["name"], toAmount, toItemData.info) + RemoveFromStash(stashId, toSlot, itemInfo['name'], toAmount) + AddToStash(stashId, fromSlot, toSlot, itemInfo['name'], toAmount, toItemData.info) end end itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - AddToStash(stashId, toSlot, fromSlot, itemInfo["name"], fromAmount, fromItemData.info) + AddToStash(stashId, toSlot, fromSlot, itemInfo['name'], fromAmount, fromItemData.info) end else - QBCore.Functions.Notify(src, Lang:t("notify.itemexist"), "error") + QBCore.Functions.Notify(src, Lang:t('notify.itemexist'), 'error') end - elseif QBCore.Shared.SplitStr(fromInventory, "-")[1] == "traphouse" then - local traphouseId = QBCore.Shared.SplitStr(fromInventory, "-")[2] + elseif QBCore.Shared.SplitStr(fromInventory, '-')[1] == 'traphouse' then + local traphouseId = QBCore.Shared.SplitStr(fromInventory, '-')[2] local fromItemData = exports['qb-traphouse']:GetInventoryData(traphouseId, fromSlot) fromAmount = tonumber(fromAmount) or fromItemData.amount if fromItemData and fromItemData.amount >= fromAmount then local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - if toInventory == "player" or toInventory == "hotbar" then + if toInventory == 'player' or toInventory == 'hotbar' then local toItemData = GetItemBySlot(src, toSlot) - exports['qb-traphouse']:RemoveHouseItem(traphouseId, fromSlot, itemInfo["name"], fromAmount) + exports['qb-traphouse']:RemoveHouseItem(traphouseId, fromSlot, itemInfo['name'], fromAmount) if toItemData then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then RemoveItem(src, toItemData.name, toAmount, toSlot) - exports['qb-traphouse']:AddHouseItem(traphouseId, fromSlot, itemInfo["name"], toAmount, toItemData.info, src) - TriggerEvent("qb-log:server:CreateLog", "stash", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) swapped item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** with item; name: **"..fromItemData.name.."**, amount: **" .. fromAmount .. "** stash: *" .. traphouseId .. "*") + exports['qb-traphouse']:AddHouseItem(traphouseId, fromSlot, itemInfo['name'], toAmount, toItemData.info, src) + TriggerEvent('qb-log:server:CreateLog', 'stash', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) swapped item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** with item; name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** stash: *' .. traphouseId .. '*') else - TriggerEvent("qb-log:server:CreateLog", "stash", "Stacked Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) stacked item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** from stash: *" .. traphouseId .. "*") + TriggerEvent('qb-log:server:CreateLog', 'stash', 'Stacked Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) stacked item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** from stash: *' .. traphouseId .. '*') end else - TriggerEvent("qb-log:server:CreateLog", "stash", "Received Item", "green", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) received item; name: **"..fromItemData.name.."**, amount: **" .. fromAmount.. "** stash: *" .. traphouseId .. "*") + TriggerEvent('qb-log:server:CreateLog', 'stash', 'Received Item', 'green', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) received item; name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** stash: *' .. traphouseId .. '*') end AddItem(src, fromItemData.name, fromAmount, toSlot, fromItemData.info) else local toItemData = exports['qb-traphouse']:GetInventoryData(traphouseId, toSlot) - exports['qb-traphouse']:RemoveHouseItem(traphouseId, fromSlot, itemInfo["name"], fromAmount) + exports['qb-traphouse']:RemoveHouseItem(traphouseId, fromSlot, itemInfo['name'], fromAmount) if toItemData then toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] - exports['qb-traphouse']:RemoveHouseItem(traphouseId, toSlot, itemInfo["name"], toAmount) - exports['qb-traphouse']:AddHouseItem(traphouseId, fromSlot, itemInfo["name"], toAmount, toItemData.info, src) + exports['qb-traphouse']:RemoveHouseItem(traphouseId, toSlot, itemInfo['name'], toAmount) + exports['qb-traphouse']:AddHouseItem(traphouseId, fromSlot, itemInfo['name'], toAmount, toItemData.info, src) end end itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - exports['qb-traphouse']:AddHouseItem(traphouseId, toSlot, itemInfo["name"], fromAmount, fromItemData.info, src) + exports['qb-traphouse']:AddHouseItem(traphouseId, toSlot, itemInfo['name'], fromAmount, fromItemData.info, src) end else - QBCore.Functions.Notify(src, "Item doesn't exist??", "error") + QBCore.Functions.Notify(src, "Item doesn't exist??", 'error') end - elseif QBCore.Shared.SplitStr(fromInventory, "-")[1] == "itemshop" then - local shopType = QBCore.Shared.SplitStr(fromInventory, "-")[2] + elseif QBCore.Shared.SplitStr(fromInventory, '-')[1] == 'itemshop' then + local shopType = QBCore.Shared.SplitStr(fromInventory, '-')[2] local itemData = ShopItems[shopType].items[fromSlot] local itemInfo = QBCore.Shared.Items[itemData.name:lower()] - local bankBalance = Player.PlayerData.money["bank"] - local price = tonumber((itemData.price*fromAmount)) + local bankBalance = Player.PlayerData.money['bank'] + local price = tonumber((itemData.price * fromAmount)) - if QBCore.Shared.SplitStr(shopType, "_")[1] == "Dealer" then - if QBCore.Shared.SplitStr(itemData.name, "_")[1] == "weapon" then + if QBCore.Shared.SplitStr(shopType, '_')[1] == 'Dealer' then + if QBCore.Shared.SplitStr(itemData.name, '_')[1] == 'weapon' then price = tonumber(itemData.price) - if Player.Functions.RemoveMoney("cash", price, "dealer-item-bought") then + if Player.Functions.RemoveMoney('cash', price, 'dealer-item-bought') then itemData.info.serie = tostring(QBCore.Shared.RandomInt(2) .. QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(1) .. QBCore.Shared.RandomStr(2) .. QBCore.Shared.RandomInt(3) .. QBCore.Shared.RandomStr(4)) itemData.info.quality = 100 AddItem(src, itemData.name, 1, toSlot, itemData.info) TriggerClientEvent('qb-drugs:client:updateDealerItems', src, itemData, 1) - QBCore.Functions.Notify(src, itemInfo["label"] .. " bought!", "success") - TriggerEvent("qb-log:server:CreateLog", "dealers", "Dealer item bought", "green", "**"..GetPlayerName(src) .. "** bought a " .. itemInfo["label"] .. " for $"..price) + QBCore.Functions.Notify(src, itemInfo['label'] .. ' bought!', 'success') + TriggerEvent('qb-log:server:CreateLog', 'dealers', 'Dealer item bought', 'green', '**' .. GetPlayerName(src) .. '** bought a ' .. itemInfo['label'] .. ' for $' .. price) else - QBCore.Functions.Notify(src, Lang:t("notify.notencash"), "error") + QBCore.Functions.Notify(src, Lang:t('notify.notencash'), 'error') end else - if Player.Functions.RemoveMoney("cash", price, "dealer-item-bought") then + if Player.Functions.RemoveMoney('cash', price, 'dealer-item-bought') then AddItem(src, itemData.name, fromAmount, toSlot, itemData.info) TriggerClientEvent('qb-drugs:client:updateDealerItems', src, itemData, fromAmount) - QBCore.Functions.Notify(src, itemInfo["label"] .. " bought!", "success") - TriggerEvent("qb-log:server:CreateLog", "dealers", "Dealer item bought", "green", "**"..GetPlayerName(src) .. "** bought a " .. itemInfo["label"] .. " for $"..price) + QBCore.Functions.Notify(src, itemInfo['label'] .. ' bought!', 'success') + TriggerEvent('qb-log:server:CreateLog', 'dealers', 'Dealer item bought', 'green', '**' .. GetPlayerName(src) .. '** bought a ' .. itemInfo['label'] .. ' for $' .. price) else - QBCore.Functions.Notify(src, "You don't have enough cash..", "error") + QBCore.Functions.Notify(src, "You don't have enough cash..", 'error') end end - elseif QBCore.Shared.SplitStr(shopType, "_")[1] == "Itemshop" then - if Player.Functions.RemoveMoney("cash", price, "itemshop-bought-item") then - if QBCore.Shared.SplitStr(itemData.name, "_")[1] == "weapon" then - itemData.info.serie = tostring(QBCore.Shared.RandomInt(2) .. QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(1) .. QBCore.Shared.RandomStr(2) .. QBCore.Shared.RandomInt(3) .. QBCore.Shared.RandomStr(4)) + elseif QBCore.Shared.SplitStr(shopType, '_')[1] == 'Itemshop' then + if Player.Functions.RemoveMoney('cash', price, 'itemshop-bought-item') then + if QBCore.Shared.SplitStr(itemData.name, '_')[1] == 'weapon' then + itemData.info.serie = tostring(QBCore.Shared.RandomInt(2) .. QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(1) .. QBCore.Shared.RandomStr(2) .. QBCore.Shared.RandomInt(3) .. QBCore.Shared.RandomStr(4)) itemData.info.quality = 100 - end + end AddItem(src, itemData.name, fromAmount, toSlot, itemData.info) - TriggerClientEvent('qb-shops:client:UpdateShop', src, QBCore.Shared.SplitStr(shopType, "_")[2], itemData, fromAmount) - QBCore.Functions.Notify(src, itemInfo["label"] .. " bought!", "success") - TriggerEvent("qb-log:server:CreateLog", "shops", "Shop item bought", "green", "**"..GetPlayerName(src) .. "** bought a " .. itemInfo["label"] .. " for $"..price) + TriggerClientEvent('qb-shops:client:UpdateShop', src, QBCore.Shared.SplitStr(shopType, '_')[2], itemData, fromAmount) + QBCore.Functions.Notify(src, itemInfo['label'] .. ' bought!', 'success') + TriggerEvent('qb-log:server:CreateLog', 'shops', 'Shop item bought', 'green', '**' .. GetPlayerName(src) .. '** bought a ' .. itemInfo['label'] .. ' for $' .. price) elseif bankBalance >= price then - Player.Functions.RemoveMoney("bank", price, "itemshop-bought-item") - if QBCore.Shared.SplitStr(itemData.name, "_")[1] == "weapon" then - itemData.info.serie = tostring(QBCore.Shared.RandomInt(2) .. QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(1) .. QBCore.Shared.RandomStr(2) .. QBCore.Shared.RandomInt(3) .. QBCore.Shared.RandomStr(4)) + Player.Functions.RemoveMoney('bank', price, 'itemshop-bought-item') + if QBCore.Shared.SplitStr(itemData.name, '_')[1] == 'weapon' then + itemData.info.serie = tostring(QBCore.Shared.RandomInt(2) .. QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(1) .. QBCore.Shared.RandomStr(2) .. QBCore.Shared.RandomInt(3) .. QBCore.Shared.RandomStr(4)) itemData.info.quality = 100 - end + end AddItem(src, itemData.name, fromAmount, toSlot, itemData.info) - TriggerClientEvent('qb-shops:client:UpdateShop', src, QBCore.Shared.SplitStr(shopType, "_")[2], itemData, fromAmount) - QBCore.Functions.Notify(src, itemInfo["label"] .. " bought!", "success") - TriggerEvent("qb-log:server:CreateLog", "shops", "Shop item bought", "green", "**"..GetPlayerName(src) .. "** bought a " .. itemInfo["label"] .. " for $"..price) + TriggerClientEvent('qb-shops:client:UpdateShop', src, QBCore.Shared.SplitStr(shopType, '_')[2], itemData, fromAmount) + QBCore.Functions.Notify(src, itemInfo['label'] .. ' bought!', 'success') + TriggerEvent('qb-log:server:CreateLog', 'shops', 'Shop item bought', 'green', '**' .. GetPlayerName(src) .. '** bought a ' .. itemInfo['label'] .. ' for $' .. price) else - QBCore.Functions.Notify(src, "You don't have enough cash..", "error") + QBCore.Functions.Notify(src, "You don't have enough cash..", 'error') end else - if Player.Functions.RemoveMoney("cash", price, "unkown-itemshop-bought-item") then + if Player.Functions.RemoveMoney('cash', price, 'unkown-itemshop-bought-item') then AddItem(src, itemData.name, fromAmount, toSlot, itemData.info) - QBCore.Functions.Notify(src, itemInfo["label"] .. " bought!", "success") - TriggerEvent("qb-log:server:CreateLog", "shops", "Shop item bought", "green", "**"..GetPlayerName(src) .. "** bought a " .. itemInfo["label"] .. " for $"..price) + QBCore.Functions.Notify(src, itemInfo['label'] .. ' bought!', 'success') + TriggerEvent('qb-log:server:CreateLog', 'shops', 'Shop item bought', 'green', '**' .. GetPlayerName(src) .. '** bought a ' .. itemInfo['label'] .. ' for $' .. price) elseif bankBalance >= price then - Player.Functions.RemoveMoney("bank", price, "unkown-itemshop-bought-item") + Player.Functions.RemoveMoney('bank', price, 'unkown-itemshop-bought-item') AddItem(src, itemData.name, fromAmount, toSlot, itemData.info) - QBCore.Functions.Notify(src, itemInfo["label"] .. " bought!", "success") - TriggerEvent("qb-log:server:CreateLog", "shops", "Shop item bought", "green", "**"..GetPlayerName(src) .. "** bought a " .. itemInfo["label"] .. " for $"..price) + QBCore.Functions.Notify(src, itemInfo['label'] .. ' bought!', 'success') + TriggerEvent('qb-log:server:CreateLog', 'shops', 'Shop item bought', 'green', '**' .. GetPlayerName(src) .. '** bought a ' .. itemInfo['label'] .. ' for $' .. price) else - QBCore.Functions.Notify(src, Lang:t("notify.notencash"), "error") + QBCore.Functions.Notify(src, Lang:t('notify.notencash'), 'error') end end - elseif fromInventory == "crafting" then + elseif fromInventory == 'crafting' then local itemData = Config.CraftingItems[fromSlot] if hasCraftItems(src, itemData.costs, fromAmount) then - TriggerClientEvent("inventory:client:CraftItems", src, itemData.name, itemData.costs, fromAmount, toSlot, itemData.points) + TriggerClientEvent('inventory:client:CraftItems', src, itemData.name, itemData.costs, fromAmount, toSlot, itemData.points) else - TriggerClientEvent("inventory:client:UpdatePlayerInventory", src, true) - QBCore.Functions.Notify(src, Lang:t("notify.noitem"), "error") + TriggerClientEvent('inventory:client:UpdatePlayerInventory', src, true) + QBCore.Functions.Notify(src, Lang:t('notify.noitem'), 'error') end - elseif fromInventory == "attachment_crafting" then - local itemData = Config.AttachmentCrafting["items"][fromSlot] + elseif fromInventory == 'attachment_crafting' then + local itemData = Config.AttachmentCrafting['items'][fromSlot] if hasCraftItems(src, itemData.costs, fromAmount) then - TriggerClientEvent("inventory:client:CraftAttachment", src, itemData.name, itemData.costs, fromAmount, toSlot, itemData.points) + TriggerClientEvent('inventory:client:CraftAttachment', src, itemData.name, itemData.costs, fromAmount, toSlot, itemData.points) else - TriggerClientEvent("inventory:client:UpdatePlayerInventory", src, true) - QBCore.Functions.Notify(src, Lang:t("notify.noitem"), "error") + TriggerClientEvent('inventory:client:UpdatePlayerInventory', src, true) + QBCore.Functions.Notify(src, Lang:t('notify.noitem'), 'error') end else -- drop @@ -2169,66 +2170,70 @@ RegisterNetEvent('inventory:server:SetInventoryData', function(fromInventory, to fromAmount = tonumber(fromAmount) or fromItemData.amount if fromItemData and fromItemData.amount >= fromAmount then local itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - if toInventory == "player" or toInventory == "hotbar" then + if toInventory == 'player' or toInventory == 'hotbar' then local toItemData = GetItemBySlot(src, toSlot) - RemoveFromDrop(fromInventory, fromSlot, itemInfo["name"], fromAmount) + RemoveFromDrop(fromInventory, fromSlot, itemInfo['name'], fromAmount) if toItemData then toAmount = tonumber(toAmount) and tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] RemoveItem(src, toItemData.name, toAmount, toSlot) - AddToDrop(fromInventory, toSlot, itemInfo["name"], toAmount, toItemData.info) - if itemInfo["name"] == "radio" then + AddToDrop(fromInventory, toSlot, itemInfo['name'], toAmount, toItemData.info) + if itemInfo['name'] == 'radio' then TriggerClientEvent('Radio.Set', src, false) end - TriggerEvent("qb-log:server:CreateLog", "drop", "Swapped Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) swapped item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** with item; name: **"..fromItemData.name.."**, amount: **" .. fromAmount .. "** - dropid: *" .. fromInventory .. "*") + TriggerEvent('qb-log:server:CreateLog', 'drop', 'Swapped Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) swapped item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** with item; name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** - dropid: *' .. fromInventory .. '*') else - TriggerEvent("qb-log:server:CreateLog", "drop", "Stacked Item", "orange", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) stacked item; name: **"..toItemData.name.."**, amount: **" .. toAmount .. "** - from dropid: *" .. fromInventory .. "*") + TriggerEvent('qb-log:server:CreateLog', 'drop', 'Stacked Item', 'orange', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) stacked item; name: **' .. toItemData.name .. '**, amount: **' .. toAmount .. '** - from dropid: *' .. fromInventory .. '*') end else - TriggerEvent("qb-log:server:CreateLog", "drop", "Received Item", "green", "**".. GetPlayerName(src) .. "** (citizenid: *"..Player.PlayerData.citizenid.."* | id: *"..src.."*) received item; name: **"..fromItemData.name.."**, amount: **" .. fromAmount.. "** - dropid: *" .. fromInventory .. "*") + TriggerEvent('qb-log:server:CreateLog', 'drop', 'Received Item', 'green', '**' .. GetPlayerName(src) .. '** (citizenid: *' .. Player.PlayerData.citizenid .. '* | id: *' .. src .. '*) received item; name: **' .. fromItemData.name .. '**, amount: **' .. fromAmount .. '** - dropid: *' .. fromInventory .. '*') end AddItem(src, fromItemData.name, fromAmount, toSlot, fromItemData.info) else toInventory = tonumber(toInventory) local toItemData = Drops[toInventory].items[toSlot] - RemoveFromDrop(fromInventory, fromSlot, itemInfo["name"], fromAmount) + RemoveFromDrop(fromInventory, fromSlot, itemInfo['name'], fromAmount) --Player.PlayerData.items[toSlot] = fromItemData if toItemData then --Player.PlayerData.items[fromSlot] = toItemData toAmount = tonumber(toAmount) or toItemData.amount if toItemData.name ~= fromItemData.name then itemInfo = QBCore.Shared.Items[toItemData.name:lower()] - RemoveFromDrop(toInventory, toSlot, itemInfo["name"], toAmount) - AddToDrop(fromInventory, fromSlot, itemInfo["name"], toAmount, toItemData.info) - if itemInfo["name"] == "radio" then + RemoveFromDrop(toInventory, toSlot, itemInfo['name'], toAmount) + AddToDrop(fromInventory, fromSlot, itemInfo['name'], toAmount, toItemData.info) + if itemInfo['name'] == 'radio' then TriggerClientEvent('Radio.Set', src, false) end end end itemInfo = QBCore.Shared.Items[fromItemData.name:lower()] - AddToDrop(toInventory, toSlot, itemInfo["name"], fromAmount, fromItemData.info) - if itemInfo["name"] == "radio" then + AddToDrop(toInventory, toSlot, itemInfo['name'], fromAmount, fromItemData.info) + if itemInfo['name'] == 'radio' then TriggerClientEvent('Radio.Set', src, false) end end else - QBCore.Functions.Notify(src, "Item doesn't exist??", "error") + QBCore.Functions.Notify(src, "Item doesn't exist??", 'error') end end end) -RegisterServerEvent("inventory:server:GiveItem", function(target, name, amount, slot) - local src = source - local Player = QBCore.Functions.GetPlayer(src) +RegisterServerEvent('inventory:server:GiveItem', function(target, name, amount, slot) + local src = source + local Player = QBCore.Functions.GetPlayer(src) target = tonumber(target) - local OtherPlayer = QBCore.Functions.GetPlayer(target) - local dist = #(GetEntityCoords(GetPlayerPed(src))-GetEntityCoords(GetPlayerPed(target))) - if Player == OtherPlayer then return QBCore.Functions.Notify(src, Lang:t("notify.gsitem")) end - if dist > 2 then return QBCore.Functions.Notify(src, Lang:t("notify.tftgitem")) end + local OtherPlayer = QBCore.Functions.GetPlayer(target) + local dist = #(GetEntityCoords(GetPlayerPed(src)) - GetEntityCoords(GetPlayerPed(target))) + if Player == OtherPlayer then return QBCore.Functions.Notify(src, Lang:t('notify.gsitem')) end + if dist > 2 then return QBCore.Functions.Notify(src, Lang:t('notify.tftgitem')) end local item = GetItemBySlot(src, slot) - if not item then QBCore.Functions.Notify(src, Lang:t("notify.infound")); return end - if item.name ~= name then QBCore.Functions.Notify(src, Lang:t("notify.iifound")); return end + if not item then + QBCore.Functions.Notify(src, Lang:t('notify.infound')); return + end + if item.name ~= name then + QBCore.Functions.Notify(src, Lang:t('notify.iifound')); return + end if amount <= item.amount then if amount == 0 then @@ -2236,34 +2241,34 @@ RegisterServerEvent("inventory:server:GiveItem", function(target, name, amount, end if RemoveItem(src, item.name, amount, item.slot) then if AddItem(target, item.name, amount, false, item.info) then - TriggerClientEvent('inventory:client:ItemBox',target, QBCore.Shared.Items[item.name], "add") - QBCore.Functions.Notify(target, Lang:t("notify.gitemrec")..amount..' '..item.label..Lang:t("notify.gitemfrom")..Player.PlayerData.charinfo.firstname.." "..Player.PlayerData.charinfo.lastname) - TriggerClientEvent("inventory:client:UpdatePlayerInventory", target, true) - TriggerClientEvent('inventory:client:ItemBox',src, QBCore.Shared.Items[item.name], "remove") - QBCore.Functions.Notify(src, Lang:t("notify.gitemyg") .. OtherPlayer.PlayerData.charinfo.firstname.." "..OtherPlayer.PlayerData.charinfo.lastname.. " " .. amount .. " " .. item.label .."!") - TriggerClientEvent("inventory:client:UpdatePlayerInventory", src, true) + TriggerClientEvent('inventory:client:ItemBox', target, QBCore.Shared.Items[item.name], 'add') + QBCore.Functions.Notify(target, Lang:t('notify.gitemrec') .. amount .. ' ' .. item.label .. Lang:t('notify.gitemfrom') .. Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname) + TriggerClientEvent('inventory:client:UpdatePlayerInventory', target, true) + TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[item.name], 'remove') + QBCore.Functions.Notify(src, Lang:t('notify.gitemyg') .. OtherPlayer.PlayerData.charinfo.firstname .. ' ' .. OtherPlayer.PlayerData.charinfo.lastname .. ' ' .. amount .. ' ' .. item.label .. '!') + TriggerClientEvent('inventory:client:UpdatePlayerInventory', src, true) TriggerClientEvent('qb-inventory:client:giveAnim', src) TriggerClientEvent('qb-inventory:client:giveAnim', target) else AddItem(src, item.name, amount, item.slot, item.info) - QBCore.Functions.Notify(src, Lang:t("notify.gitinvfull"), "error") - QBCore.Functions.Notify(target, Lang:t("notify.giymif"), "error") - TriggerClientEvent("inventory:client:UpdatePlayerInventory", src, false) - TriggerClientEvent("inventory:client:UpdatePlayerInventory", target, false) + QBCore.Functions.Notify(src, Lang:t('notify.gitinvfull'), 'error') + QBCore.Functions.Notify(target, Lang:t('notify.giymif'), 'error') + TriggerClientEvent('inventory:client:UpdatePlayerInventory', src, false) + TriggerClientEvent('inventory:client:UpdatePlayerInventory', target, false) end else - QBCore.Functions.Notify(src, Lang:t("notify.gitydhei"), "error") + QBCore.Functions.Notify(src, Lang:t('notify.gitydhei'), 'error') end else - QBCore.Functions.Notify(src, Lang:t("notify.gitydhitt")) + QBCore.Functions.Notify(src, Lang:t('notify.gitydhitt')) end end) RegisterNetEvent('inventory:server:snowball', function(action) - if action == "add" then - AddItem(source, "weapon_snowball") - elseif action == "remove" then - RemoveItem(source, "weapon_snowball") + if action == 'add' then + AddItem(source, 'weapon_snowball') + elseif action == 'remove' then + RemoveItem(source, 'weapon_snowball') end end) @@ -2287,156 +2292,156 @@ QBCore.Functions.CreateCallback('inventory:server:GetCurrentDrops', function(_, end) QBCore.Functions.CreateCallback('QBCore:HasItem', function(source, cb, items, amount) - print("^3QBCore:HasItem is deprecated, please use QBCore.Functions.HasItem, it can be used on both server- and client-side and uses the same arguments.^0") - local retval = false - local Player = QBCore.Functions.GetPlayer(source) - if not Player then return cb(false) end - local isTable = type(items) == 'table' - local isArray = isTable and table.type(items) == 'array' or false - local totalItems = #items - local count = 0 - local kvIndex = 2 - if isTable and not isArray then - totalItems = 0 - for _ in pairs(items) do totalItems += 1 end - kvIndex = 1 - end - if isTable then - for k, v in pairs(items) do - local itemKV = {k, v} - local item = GetItemByName(source, itemKV[kvIndex]) - if item and ((amount and item.amount >= amount) or (not amount and not isArray and item.amount >= v) or (not amount and isArray)) then - count += 1 - end - end - if count == totalItems then - retval = true - end - else -- Single item as string - local item = GetItemByName(source, items) - if item and not amount or (item and amount and item.amount >= amount) then - retval = true - end - end - cb(retval) + print('^3QBCore:HasItem is deprecated, please use QBCore.Functions.HasItem, it can be used on both server- and client-side and uses the same arguments.^0') + local retval = false + local Player = QBCore.Functions.GetPlayer(source) + if not Player then return cb(false) end + local isTable = type(items) == 'table' + local isArray = isTable and table.type(items) == 'array' or false + local totalItems = #items + local count = 0 + local kvIndex = 2 + if isTable and not isArray then + totalItems = 0 + for _ in pairs(items) do totalItems += 1 end + kvIndex = 1 + end + if isTable then + for k, v in pairs(items) do + local itemKV = { k, v } + local item = GetItemByName(source, itemKV[kvIndex]) + if item and ((amount and item.amount >= amount) or (not amount and not isArray and item.amount >= v) or (not amount and isArray)) then + count += 1 + end + end + if count == totalItems then + retval = true + end + else -- Single item as string + local item = GetItemByName(source, items) + if item and not amount or (item and amount and item.amount >= amount) then + retval = true + end + end + cb(retval) end) --#endregion Callbacks --#region Commands -QBCore.Commands.Add("resetinv", "Reset Inventory (Admin Only)", {{name="type", help="stash/trunk/glovebox"},{name="id/plate", help="ID of stash or license plate"}}, true, function(source, args) +QBCore.Commands.Add('resetinv', 'Reset Inventory (Admin Only)', { { name = 'type', help = 'stash/trunk/glovebox' }, { name = 'id/plate', help = 'ID of stash or license plate' } }, true, function(source, args) local invType = args[1]:lower() table.remove(args, 1) - local invId = table.concat(args, " ") + local invId = table.concat(args, ' ') if invType and invId then - if invType == "trunk" then + if invType == 'trunk' then if Trunks[invId] then Trunks[invId].isOpen = false end - elseif invType == "glovebox" then + elseif invType == 'glovebox' then if Gloveboxes[invId] then Gloveboxes[invId].isOpen = false end - elseif invType == "stash" then + elseif invType == 'stash' then if Stashes[invId] then Stashes[invId].isOpen = false end else - QBCore.Functions.Notify(source, Lang:t("notify.navt"), "error") + QBCore.Functions.Notify(source, Lang:t('notify.navt'), 'error') end else - QBCore.Functions.Notify(source, Lang:t("notify.anfoc"), "error") + QBCore.Functions.Notify(source, Lang:t('notify.anfoc'), 'error') end -end, "admin") +end, 'admin') -QBCore.Commands.Add("rob", "Rob Player", {}, false, function(source, _) - TriggerClientEvent("police:client:RobPlayer", source) +QBCore.Commands.Add('rob', 'Rob Player', {}, false, function(source, _) + TriggerClientEvent('police:client:RobPlayer', source) end) -QBCore.Commands.Add("giveitem", "Give An Item (Admin Only)", {{name="id", help="Player ID"},{name="item", help="Name of the item (not a label)"}, {name="amount", help="Amount of items"}}, false, function(source, args) +QBCore.Commands.Add('giveitem', 'Give An Item (Admin Only)', { { name = 'id', help = 'Player ID' }, { name = 'item', help = 'Name of the item (not a label)' }, { name = 'amount', help = 'Amount of items' } }, false, function(source, args) local id = tonumber(args[1]) local Player = QBCore.Functions.GetPlayer(id) local amount = tonumber(args[3]) or 1 local itemData = QBCore.Shared.Items[tostring(args[2]):lower()] if Player then - if itemData then - -- check iteminfo - local info = {} - if itemData["name"] == "id_card" then - info.citizenid = Player.PlayerData.citizenid - info.firstname = Player.PlayerData.charinfo.firstname - info.lastname = Player.PlayerData.charinfo.lastname - info.birthdate = Player.PlayerData.charinfo.birthdate - info.gender = Player.PlayerData.charinfo.gender - info.nationality = Player.PlayerData.charinfo.nationality - elseif itemData["name"] == "driver_license" then - info.firstname = Player.PlayerData.charinfo.firstname - info.lastname = Player.PlayerData.charinfo.lastname - info.birthdate = Player.PlayerData.charinfo.birthdate - info.type = "Class C Driver License" - elseif itemData["type"] == "weapon" then - amount = 1 - info.serie = tostring(QBCore.Shared.RandomInt(2) .. QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(1) .. QBCore.Shared.RandomStr(2) .. QBCore.Shared.RandomInt(3) .. QBCore.Shared.RandomStr(4)) - info.quality = 100 - elseif itemData["name"] == "harness" then - info.uses = 20 - elseif itemData["name"] == "markedbills" then - info.worth = math.random(5000, 10000) - elseif itemData["name"] == "labkey" then - info.lab = exports["qb-methlab"]:GenerateRandomLab() - elseif itemData["name"] == "printerdocument" then - info.url = "https://cdn.discordapp.com/attachments/870094209783308299/870104331142189126/Logo_-_Display_Picture_-_Stylized_-_Red.png" - end + if itemData then + -- check iteminfo + local info = {} + if itemData['name'] == 'id_card' then + info.citizenid = Player.PlayerData.citizenid + info.firstname = Player.PlayerData.charinfo.firstname + info.lastname = Player.PlayerData.charinfo.lastname + info.birthdate = Player.PlayerData.charinfo.birthdate + info.gender = Player.PlayerData.charinfo.gender + info.nationality = Player.PlayerData.charinfo.nationality + elseif itemData['name'] == 'driver_license' then + info.firstname = Player.PlayerData.charinfo.firstname + info.lastname = Player.PlayerData.charinfo.lastname + info.birthdate = Player.PlayerData.charinfo.birthdate + info.type = 'Class C Driver License' + elseif itemData['type'] == 'weapon' then + amount = 1 + info.serie = tostring(QBCore.Shared.RandomInt(2) .. QBCore.Shared.RandomStr(3) .. QBCore.Shared.RandomInt(1) .. QBCore.Shared.RandomStr(2) .. QBCore.Shared.RandomInt(3) .. QBCore.Shared.RandomStr(4)) + info.quality = 100 + elseif itemData['name'] == 'harness' then + info.uses = 20 + elseif itemData['name'] == 'markedbills' then + info.worth = math.random(5000, 10000) + elseif itemData['name'] == 'labkey' then + info.lab = exports['qb-methlab']:GenerateRandomLab() + elseif itemData['name'] == 'printerdocument' then + info.url = 'https://cdn.discordapp.com/attachments/870094209783308299/870104331142189126/Logo_-_Display_Picture_-_Stylized_-_Red.png' + end - if AddItem(id, itemData["name"], amount, false, info) then - QBCore.Functions.Notify(source, Lang:t("notify.yhg") ..GetPlayerName(id).." "..amount.." "..itemData["name"].. "", "success") - else - QBCore.Functions.Notify(source, Lang:t("notify.cgitem"), "error") - end + if AddItem(id, itemData['name'], amount, false, info) then + QBCore.Functions.Notify(source, Lang:t('notify.yhg') .. GetPlayerName(id) .. ' ' .. amount .. ' ' .. itemData['name'] .. '', 'success') else - QBCore.Functions.Notify(source, Lang:t("notify.idne"), "error") + QBCore.Functions.Notify(source, Lang:t('notify.cgitem'), 'error') end + else + QBCore.Functions.Notify(source, Lang:t('notify.idne'), 'error') + end else - QBCore.Functions.Notify(source, Lang:t("notify.pdne"), "error") + QBCore.Functions.Notify(source, Lang:t('notify.pdne'), 'error') end -end, "admin") +end, 'admin') -QBCore.Commands.Add("randomitems", "Give Random Items (God Only)", {}, false, function(source, _) +QBCore.Commands.Add('randomitems', 'Give Random Items (God Only)', {}, false, function(source, _) local filteredItems = {} for k, v in pairs(QBCore.Shared.Items) do - if QBCore.Shared.Items[k]["type"] ~= "weapon" then - filteredItems[#filteredItems+1] = v + if QBCore.Shared.Items[k]['type'] ~= 'weapon' then + filteredItems[#filteredItems + 1] = v end end for _ = 1, 10, 1 do local randitem = filteredItems[math.random(1, #filteredItems)] local amount = math.random(1, 10) - if randitem["unique"] then + if randitem['unique'] then amount = 1 end - if AddItem(source, randitem["name"], amount) then - TriggerClientEvent('inventory:client:ItemBox', source, QBCore.Shared.Items[randitem["name"]], 'add') - Wait(500) + if AddItem(source, randitem['name'], amount) then + TriggerClientEvent('inventory:client:ItemBox', source, QBCore.Shared.Items[randitem['name']], 'add') + Wait(500) end end -end, "god") +end, 'god') QBCore.Commands.Add('clearinv', 'Clear Players Inventory (Admin Only)', { { name = 'id', help = 'Player ID' } }, false, function(source, args) - local playerId = args[1] ~= '' and tonumber(args[1]) or source - local Player = QBCore.Functions.GetPlayer(playerId) - if Player then - ClearInventory(playerId) - else - QBCore.Functions.Notify(source, "Player not online", 'error') - end + local playerId = args[1] ~= '' and tonumber(args[1]) or source + local Player = QBCore.Functions.GetPlayer(playerId) + if Player then + ClearInventory(playerId) + else + QBCore.Functions.Notify(source, 'Player not online', 'error') + end end, 'admin') --#endregion Commands --#region Items -CreateUsableItem("driver_license", function(source, item) +CreateUsableItem('driver_license', function(source, item) local playerPed = GetPlayerPed(source) local playerCoords = GetEntityCoords(playerPed) local players = QBCore.Functions.GetPlayers() @@ -2444,22 +2449,22 @@ CreateUsableItem("driver_license", function(source, item) local targetPed = GetPlayerPed(v) local dist = #(playerCoords - GetEntityCoords(targetPed)) if dist < 3.0 then - TriggerClientEvent('chat:addMessage', v, { - template = '', - args = { - "Drivers License", - item.info.firstname, - item.info.lastname, - item.info.birthdate, - item.info.type - } + TriggerClientEvent('chat:addMessage', v, { + template = '', + args = { + 'Drivers License', + item.info.firstname, + item.info.lastname, + item.info.birthdate, + item.info.type } + } ) end end end) -CreateUsableItem("id_card", function(source, item) +CreateUsableItem('id_card', function(source, item) local playerPed = GetPlayerPed(source) local playerCoords = GetEntityCoords(playerPed) local players = QBCore.Functions.GetPlayers() @@ -2467,22 +2472,22 @@ CreateUsableItem("id_card", function(source, item) local targetPed = GetPlayerPed(v) local dist = #(playerCoords - GetEntityCoords(targetPed)) if dist < 3.0 then - local gender = "Man" + local gender = 'Man' if item.info.gender == 1 then - gender = "Woman" + gender = 'Woman' end - TriggerClientEvent('chat:addMessage', v, { - template = '', - args = { - "ID Card", - item.info.citizenid, - item.info.firstname, - item.info.lastname, - item.info.birthdate, - gender, - item.info.nationality - } + TriggerClientEvent('chat:addMessage', v, { + template = '', + args = { + 'ID Card', + item.info.citizenid, + item.info.firstname, + item.info.lastname, + item.info.birthdate, + gender, + item.info.nationality } + } ) end end @@ -2497,11 +2502,11 @@ CreateThread(function() for k, v in pairs(Drops) do if v and (v.createdTime + Config.CleanupDropTime < os.time()) and not Drops[k].isOpen then Drops[k] = nil - TriggerClientEvent("inventory:client:RemoveDropItem", -1, k) + TriggerClientEvent('inventory:client:RemoveDropItem', -1, k) end end Wait(60 * 1000) end end) ---#endregion Threads \ No newline at end of file +--#endregion Threads