RadiationEcho

CS2 Launders 9-slot quickswitch viewmodel script

May 2nd, 2024 (edited)
403
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.80 KB | Gaming | 0 0
  1. // -----------------------------------------------------------------------
  2. // ========== Weapon viewmodel script for (originally) Launders ==========
  3. // -----------------------------------------------------------------------
  4.  
  5. // This script allows one to create individual settings for each inventory slot while preserving quickswitching functionality.
  6.  
  7. // -------- Limitations:
  8. // Script cannot tell when a slot is empty or occupied.
  9. // Script cannot tell when round is over, thus if your knife is out during round-end/death, round-start/spawn will default to slot1/2. You need to press your eq_slot1/2 or buy_menu key to re-sync the script.
  10. // If you find yourself with your hand on the wrong side, simply press the eq_slot-key again that you're on. This is a known bug when switching from slot5/10.
  11.  
  12. // -------- Instructions:
  13. // Create backup of current autoexec & config
  14. // Modify the Binds & Settings sections of the script to your liking - No other section needs to be modified.
  15. // Place in your autoexec
  16. // (Optional - not recommended) Delete backup of autoexec/config after verifying that it works.
  17.  
  18. // -------------------------
  19. // ======== CREDITS ========
  20. // -------------------------
  21.  
  22. // Based on a TF2 script by /u/genemilder (http://pastebin.com/7beau8BP).
  23. // Modified for CSGO by /u/Flapadiddle (https://pastebin.com/NV4qhDaU | http://steamcommunity.com/id/flapadiddle) 2014/12/29
  24. // Modified for CS2 originally by /u/daFARKA (https://pastebin.com/mQfg91mt | https://steamcommunity.com/id/daFARKA) 2024/04/26
  25. // By akaEcho (https://pastebin.com/q655J5W5 | youtube.com/@akaEch0 | https://steamcommunity.com/id/akaEchoCS)
  26. // Modified to fix functionality, condense logic & be made more readable - 2024/05/02
  27. // Add multiple fixes & further reduce redundant logic - 2024/05/03
  28. // Add Grenade-cycle functionality - 2024/05/04
  29. // Revised Grenade-cycle functionality & remove unnecessary aliases - 2024/05/06
  30. // Major overhaul for quickswitching & grenade throwing - 2024/05/07
  31. // Previously quickswitch would bug if you pressed a eq_slotX twice in succession. It would think that your previous and current slot were the same. This Major overhaul fixes the bug.
  32. // Previously the grenade throw fix didn't allow you to change your mind mid-throw, like letting go of left or right click while still holding the other. This fixes that.
  33. // Hotfix since switchhandsright/left were added - 2024/05/23
  34.  
  35. // ---------------------------
  36. // ========== BINDS ==========
  37. // ---------------------------
  38.  
  39. // Bind whatever keys you like. These are my binds + example binds.
  40.  
  41. bind MOUSE4 eq_slot1 // Primary
  42. bind MOUSE5 eq_slot2 // Secondary
  43. bind 1 eq_slot3 // Melee
  44. bind 4 grenade_key // Grenade-cycle - Example
  45. bind 2 eq_slot5 // Bomb
  46. bind 3 eq_slot6 // HE Grenade
  47. bind f eq_slot7 // Flashbang
  48. bind c eq_slot8 // Smoke Grenade
  49. bind g eq_slot9 // Decoy Grenade
  50. bind v eq_slot10 // Molotov/Incendiary Grenade
  51. bind q eq_lastinv // Quickswitch
  52. bind mwheeldown eq_invnext // Select next weapon - Example
  53. bind mwheelup eq_invprev // Select previous weapon - Example
  54. bind h +drop_slot // Drop-key - Default bind in-game is G
  55. bind b buy_menu // Buymenu
  56.  
  57. // ------------------------------
  58. // ========== SETTINGS ==========
  59. // ------------------------------
  60.  
  61. // If you find yourself with your hand on the wrong side, simply press the eq_slot-key again that you're on. This is a known bug when switching from slot5/10.
  62. // Script cannot tell when round is over, thus if your knife is out during round-end/death, round-start/spawn will default to slot1/2. You need to press your eq_slot1/2 or buy_menu key to re-sync the script.
  63. // To change which side a slot is on put either switchhandsright or switchhandsleft in the corresponding eq_slot.
  64. // The example below puts only the knife on the other hand side.
  65. // Insert any additional settings you wish to add for individual slots (xhair, viewmodel, sensitivity etc.) with a semicolon after each command.
  66.  
  67. alias eq_slot1 "slot1; set_slot1; weapon_slot; switchhandsright;" // Primary
  68. alias eq_slot2 "slot2; set_slot2; weapon_slot; switchhandsright;" // Secondary
  69. alias eq_slot3 "slot3; set_slot3; weapon_slot; switchhandsleft;" // Melee
  70. alias eq_slot5 "slot5; set_slot5; weapon_slot; switchhandsright;" // Bomb - Currently can't be mirrored thus switchhands doesn't succeed.
  71. alias eq_slot6 "slot6; set_slot6; grenade_slot; switchhandsright;" // HE Grenade
  72. alias eq_slot7 "slot7; set_slot7; grenade_slot; switchhandsright;" // Flashbang
  73. alias eq_slot8 "slot8; set_slot8; grenade_slot; switchhandsright;" // Smoke Grenade
  74. alias eq_slot9 "slot9; set_slot9; grenade_slot; switchhandsright;" // Decoy Grenade
  75. alias eq_slot10 "slot10; set_slot10; grenade_slot; switchhandsright;" // Molotov Grenade - Currently can't be mirrored thus switchhands doesn't succeed on T-side.
  76.  
  77. // -------------------------------------------------
  78. // ==================== LOGIC ======================
  79. // -------------------------------------------------
  80. // No touching required.
  81.  
  82. // -------- Proper Grenade-cycle functionality
  83. alias grenade_key "eq_slot6"
  84. alias grenade_reset "alias grenade_key grenade_slots;"
  85. alias grenade_slots "eq_slot10; eq_slot9; eq_slot8; eq_slot7; eq_slot6"
  86.  
  87. // -------- Drop fix
  88. alias +drop_slot "drop"
  89. alias -drop_slot "eq_slot3"
  90.  
  91. // -------- Buymenu fix
  92. alias buy_menu "eq_slot2; eq_slot1; buymenu;"
  93.  
  94. // -------- Grenade throw fix
  95.  
  96. alias weapon_slot "bind MOUSE1 "+attack"; bind MOUSE2 "+attack2";"
  97. alias grenade_slot "bind MOUSE1 +grenade_release; bind MOUSE2 +grenade_release2"
  98.  
  99. // sets 1 from 2 unactive -> set 2 from 1 active -> activate 1
  100. alias +grenade_release "+attack; eq_lastinv_NOR_deactivate_1_from_2_unactive; eq_lastinv_NOR_deactivate_2_from_1_active; eq_lastinv_NOR_activate_1;"
  101. // sets 2 from 1 unactive -> set 1 from 2 active -> activate 2
  102. alias +grenade_release2 "+attack2; eq_lastinv_NOR_deactivate_2_from_1_unactive; eq_lastinv_NOR_deactivate_1_from_2_active; eq_lastinv_NOR_activate_2;"
  103. // -attack -> activate 2 -> 1 from 2 check -> eq_lastinv_NOR1
  104. alias -grenade_release "-attack; eq_lastinv_NOR_activate_2; eq_lastinv_NOR_deactivate_1_set; eq_lastinv_NOR1;"
  105. // -attack2 -> activate 1 -> 2 from 1 check -> eq_lastinv_NOR1
  106. alias -grenade_release2 "-attack2; eq_lastinv_NOR_activate_1; eq_lastinv_NOR_deactivate_2_set; eq_lastinv_NOR2;"
  107.  
  108. // Enables NOR 1 & 2
  109. alias eq_lastinv_NOR_activate_1 "alias eq_lastinv_NOR1 NOR_out_true"
  110. alias eq_lastinv_NOR_activate_2 "alias eq_lastinv_NOR2 NOR_out_true"
  111.  
  112. // 1 from 2 check
  113. alias eq_lastinv_NOR_deactivate_1_set "alias eq_lastinv_NOR1;"
  114. // 2 from 1 check
  115. alias eq_lastinv_NOR_deactivate_2_set "alias eq_lastinv_NOR2;"
  116.  
  117. // Activates 1 from 2 deactivation
  118. alias eq_lastinv_NOR_deactivate_1_from_2_active "alias eq_lastinv_NOR_deactivate_1_set "alias eq_lastinv_NOR1""
  119. // Activates 2 from 1 deactivation
  120. alias eq_lastinv_NOR_deactivate_2_from_1_active "alias eq_lastinv_NOR_deactivate_2_set "alias eq_lastinv_NOR2""
  121.  
  122. // Unactivates 1 from 2 deactivation
  123. alias eq_lastinv_NOR_deactivate_1_from_2_unactive "alias eq_lastinv_NOR_deactivate_1_set;"
  124. // Unactivates 2 from 1 deactivation
  125. alias eq_lastinv_NOR_deactivate_2_from_1_unactive "alias eq_lastinv_NOR_deactivate_2_set;"
  126.  
  127. // NOR gate outputs
  128. alias eq_lastinv_NOR1 NOR_out_true
  129. alias eq_lastinv_NOR2 NOR_out_true
  130.  
  131. // NOR output true
  132. alias NOR_out_true "eq_slot2; eq_slot1"
  133.  
  134. // -------- Manual Quickswitch functionality slots
  135. alias set_slot1 "alias eq_invnext eq_slot2; alias eq_invprev eq_slot10; set_lastinv2-10_reset; set_lastinv1_slot; grenade_reset;"
  136. alias set_slot2 "alias eq_invnext eq_slot3; alias eq_invprev eq_slot1; set_lastinv1_3-10_reset; set_lastinv2_slot; grenade_reset;"
  137. alias set_slot3 "alias eq_invnext eq_slot5; alias eq_invprev eq_slot2; set_lastinv1-2_5-10_reset; set_lastinv3_slot; grenade_reset;"
  138. alias set_slot5 "alias eq_invnext eq_slot6; alias eq_invprev eq_slot3; set_lastinv1-3_6-10_reset; set_lastinv5_slot; grenade_reset;"
  139. alias set_slot6 "alias eq_invnext eq_slot7; alias eq_invprev eq_slot5; set_lastinv1-5_7-10_reset; set_lastinv6_slot; alias grenade_key eq_slot7;"
  140. alias set_slot7 "alias eq_invnext eq_slot8; alias eq_invprev eq_slot6; set_lastinv1-6_8-10_reset; set_lastinv7_slot; alias grenade_key eq_slot8;"
  141. alias set_slot8 "alias eq_invnext eq_slot9; alias eq_invprev eq_slot7; set_lastinv1-7_9-10_reset; set_lastinv8_slot; alias grenade_key eq_slot9;"
  142. alias set_slot9 "alias eq_invnext eq_slot10; alias eq_invprev eq_slot8; set_lastinv1-8_10_reset; set_lastinv9_slot; alias grenade_key eq_slot10;"
  143. alias set_slot10 "alias eq_invnext eq_slot1; alias eq_invprev eq_slot9; set_lastinv1-9_reset; set_lastinv10_slot; alias grenade_key eq_slot6;"
  144.  
  145. // -------- Set_lastinv backend fix
  146.  
  147. // Set variables - think of as RAM for keeping track of previous slot & function that clears the RAM
  148. alias set_lastinv
  149. alias base_lastinvs "alias set_lastinv;"
  150.  
  151. // called from set_slot -> sets eq_lastinv for previous -> empties set_lastinv -> calls set_lastinvX -> empties/nulls itself out
  152. alias set_lastinv1_slot "set_lastinv; base_lastinvs; set_lastinv1; alias set_lastinv1_slot;"
  153. alias set_lastinv2_slot "set_lastinv; base_lastinvs; set_lastinv2; alias set_lastinv2_slot;"
  154. alias set_lastinv3_slot "set_lastinv; base_lastinvs; set_lastinv3; alias set_lastinv3_slot;"
  155. alias set_lastinv5_slot "set_lastinv; base_lastinvs; set_lastinv5; alias set_lastinv5_slot;"
  156. alias set_lastinv6_slot "set_lastinv; base_lastinvs; set_lastinv6; alias set_lastinv6_slot;"
  157. alias set_lastinv7_slot "set_lastinv; base_lastinvs; set_lastinv7; alias set_lastinv7_slot;"
  158. alias set_lastinv8_slot "set_lastinv; base_lastinvs; set_lastinv8; alias set_lastinv8_slot;"
  159. alias set_lastinv9_slot "set_lastinv; base_lastinvs; set_lastinv9; alias set_lastinv9_slot;"
  160. alias set_lastinv10_slot "set_lastinv; base_lastinvs; set_lastinv10; alias set_lastinv10_slot;"
  161.  
  162. // doesn't change - aliases set_lastinv so that eq_lastinv is most recent slot
  163. alias set_lastinv1 "alias set_lastinv alias eq_lastinv eq_slot1"
  164. alias set_lastinv2 "alias set_lastinv alias eq_lastinv eq_slot2"
  165. alias set_lastinv3 "alias set_lastinv alias eq_lastinv eq_slot3"
  166. alias set_lastinv5 "alias set_lastinv alias eq_lastinv eq_slot5"
  167. alias set_lastinv6 "alias set_lastinv alias eq_lastinv eq_slot6"
  168. alias set_lastinv7 "alias set_lastinv alias eq_lastinv eq_slot7"
  169. alias set_lastinv8 "alias set_lastinv alias eq_lastinv eq_slot8"
  170. alias set_lastinv9 "alias set_lastinv alias eq_lastinv eq_slot9"
  171. alias set_lastinv10 "alias set_lastinv alias eq_lastinv eq_slot10"
  172.  
  173. // doesn't change - alias fills set_lastinvX_slots
  174. alias set_lastinv1_reset alias set_lastinv1_slot set_lastinv1_reset_slot
  175. alias set_lastinv1_reset_slot "set_lastinv; base_lastinvs; set_lastinv1; alias set_lastinv1_slot;"
  176.  
  177. alias set_lastinv2_reset alias set_lastinv2_slot set_lastinv2_reset_slot
  178. alias set_lastinv2_reset_slot "set_lastinv; base_lastinvs; set_lastinv2; alias set_lastinv2_slot;"
  179.  
  180. alias set_lastinv3_reset alias set_lastinv3_slot set_lastinv3_reset_slot
  181. alias set_lastinv3_reset_slot "set_lastinv; base_lastinvs; set_lastinv3; alias set_lastinv3_slot;"
  182.  
  183. alias set_lastinv5_reset alias set_lastinv5_slot set_lastinv5_reset_slot
  184. alias set_lastinv5_reset_slot "set_lastinv; base_lastinvs; set_lastinv5; alias set_lastinv5_slot;"
  185.  
  186. alias set_lastinv6_reset alias set_lastinv6_slot set_lastinv6_reset_slot
  187. alias set_lastinv6_reset_slot "set_lastinv; base_lastinvs; set_lastinv6; alias set_lastinv6_slot;"
  188.  
  189. alias set_lastinv7_reset alias set_lastinv7_slot set_lastinv7_reset_slot
  190. alias set_lastinv7_reset_slot "set_lastinv; base_lastinvs; set_lastinv7; alias set_lastinv7_slot;"
  191.  
  192. alias set_lastinv8_reset alias set_lastinv8_slot set_lastinv8_reset_slot
  193. alias set_lastinv8_reset_slot "set_lastinv; base_lastinvs; set_lastinv8; alias set_lastinv8_slot;"
  194.  
  195. alias set_lastinv9_reset alias set_lastinv9_slot set_lastinv9_reset_slot
  196. alias set_lastinv9_reset_slot "set_lastinv; base_lastinvs; set_lastinv9; alias set_lastinv9_slot;"
  197.  
  198. alias set_lastinv10_reset alias set_lastinv10_slot set_lastinv10_reset_slot
  199. alias set_lastinv10_reset_slot "set_lastinv; base_lastinvs; set_lastinv10; alias set_lastinv10_slot;"
  200.  
  201. // calls all set_lastinvX_resets that aren't the slot it switched to, resetting the other set_lastinvX_slots
  202. alias set_lastinv2-10_reset "set_lastinv2_reset; set_lastinv3_reset; set_lastinv5_reset; set_lastinv6_reset; set_lastinv7_reset; set_lastinv8_reset; set_lastinv9_reset; set_lastinv10_reset;"
  203. alias set_lastinv1_3-10_reset "set_lastinv1_reset; set_lastinv3_reset; set_lastinv5_reset; set_lastinv6_reset; set_lastinv7_reset; set_lastinv8_reset; set_lastinv9_reset; set_lastinv10_reset;"
  204. alias set_lastinv1-2_5-10_reset "set_lastinv1_reset; set_lastinv2_reset; set_lastinv5_reset; set_lastinv6_reset; set_lastinv7_reset; set_lastinv8_reset; set_lastinv9_reset; set_lastinv10_reset;"
  205. alias set_lastinv1-3_6-10_reset "set_lastinv1_reset; set_lastinv2_reset; set_lastinv3_reset; set_lastinv6_reset; set_lastinv7_reset; set_lastinv8_reset; set_lastinv9_reset; set_lastinv10_reset;"
  206. alias set_lastinv1-5_7-10_reset "set_lastinv1_reset; set_lastinv2_reset; set_lastinv3_reset; set_lastinv5_reset; set_lastinv7_reset; set_lastinv8_reset; set_lastinv9_reset; set_lastinv10_reset;"
  207. alias set_lastinv1-6_8-10_reset "set_lastinv1_reset; set_lastinv2_reset; set_lastinv3_reset; set_lastinv5_reset; set_lastinv6_reset; set_lastinv8_reset; set_lastinv9_reset; set_lastinv10_reset;"
  208. alias set_lastinv1-7_9-10_reset "set_lastinv1_reset; set_lastinv2_reset; set_lastinv3_reset; set_lastinv5_reset; set_lastinv6_reset; set_lastinv7_reset; set_lastinv9_reset; set_lastinv10_reset;"
  209. alias set_lastinv1-8_10_reset "set_lastinv1_reset; set_lastinv2_reset; set_lastinv3_reset; set_lastinv5_reset; set_lastinv6_reset; set_lastinv7_reset; set_lastinv8_reset; set_lastinv10_reset;"
  210. alias set_lastinv1-9_reset "set_lastinv1_reset; set_lastinv2_reset; set_lastinv3_reset; set_lastinv5_reset; set_lastinv6_reset; set_lastinv7_reset; set_lastinv8_reset; set_lastinv9_reset;"
  211.  
  212. // -------------------------------------------
  213. // Logic path if you want to understand it
  214. // -------------------------------------------
  215.  
  216. // Example - switching from secondary to primary
  217. // eq_slot2 -> eq_slot1
  218. // eq_slot1 "slot1; set_slot1; weapon_slot; noswitch;"
  219. // slot1 - takes out your primary (normal game bind)
  220. // set_slot1 "alias eq_invnext eq_slot2; alias eq_invprev eq_slot10; set_lastinv2-10_reset; set_lastinv1_slot; grenade_reset;"
  221. // alias eq_invnext eq_slot2
  222. // alias eq_invprev eq_slot10
  223. // set_lastinv2-10_reset "set_lastinv2_reset; set_lastinv3_reset; set_lastinv5_reset; set_lastinv6_reset; set_lastinv7_reset; set_lastinv8_reset; set_lastinv9_reset; set_lastinv10_reset;"
  224. // set_lastinv2_reset alias set_lastinv2_slot set_lastinv2_reset_slot
  225. // alias set_lastinv2_reset_slot "set_lastinv; base_lastinvs; set_lastinv2; alias set_lastinv2_slot;"
  226. // set_lastinv1_slot "set_lastinv; base_lastinvs; set_lastinv1; alias set_lastinv1_slot;"
  227. // alias eq_lastinv eq_slot2
  228. // alias set_lastinv ""
  229. // set_lastinv1 "alias set_lastinv alias eq_lastinv eq_slot1"
  230. // alias set_lastinv alias eq_lastinv eq_slot1
  231. // alias set_lastinv1_slot ""
  232. // grenade_reset "alias grenade_key grenade_slots;"
  233. // alias grenade_key grenade_slots;
  234. // grenade_slot "eq_slot10; eq_slot9; eq_slot8; eq_slot7; eq_slot6"
  235. // weapon_slot "bind MOUSE1 "+attack"; bind MOUSE2 "+attack2";"
  236. // noswitch "base_hand; set_hand;"
  237. // base_hand "set_hand; alias set_hand;"
  238. // set_hand
  239. // set_hand ""
  240. // set_hand
  241.  
  242. // -------------------------------------------
  243.  
  244. // Set slots
  245. set_slot2
  246. eq_slot1
  247. weapon_slot
Add Comment
Please, Sign In to add comment