Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // -----------------------------------------------------------------------
- // ========== Weapon viewmodel script for (originally) Launders ==========
- // -----------------------------------------------------------------------
- // This script allows one to create individual settings for each inventory slot while preserving quickswitching functionality.
- // -------- Limitations:
- // Script cannot tell when a slot is empty or occupied.
- // 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.
- // 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.
- // -------- Instructions:
- // Create backup of current autoexec & config
- // Modify the Binds & Settings sections of the script to your liking - No other section needs to be modified.
- // Place in your autoexec
- // (Optional - not recommended) Delete backup of autoexec/config after verifying that it works.
- // -------------------------
- // ======== CREDITS ========
- // -------------------------
- // Based on a TF2 script by /u/genemilder (http://pastebin.com/7beau8BP).
- // Modified for CSGO by /u/Flapadiddle (https://pastebin.com/NV4qhDaU | http://steamcommunity.com/id/flapadiddle) 2014/12/29
- // Modified for CS2 originally by /u/daFARKA (https://pastebin.com/mQfg91mt | https://steamcommunity.com/id/daFARKA) 2024/04/26
- // By akaEcho (https://pastebin.com/q655J5W5 | youtube.com/@akaEch0 | https://steamcommunity.com/id/akaEchoCS)
- // Modified to fix functionality, condense logic & be made more readable - 2024/05/02
- // Add multiple fixes & further reduce redundant logic - 2024/05/03
- // Add Grenade-cycle functionality - 2024/05/04
- // Revised Grenade-cycle functionality & remove unnecessary aliases - 2024/05/06
- // Major overhaul for quickswitching & grenade throwing - 2024/05/07
- // 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.
- // 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.
- // Hotfix since switchhandsright/left were added - 2024/05/23
- // ---------------------------
- // ========== BINDS ==========
- // ---------------------------
- // Bind whatever keys you like. These are my binds + example binds.
- bind MOUSE4 eq_slot1 // Primary
- bind MOUSE5 eq_slot2 // Secondary
- bind 1 eq_slot3 // Melee
- bind 4 grenade_key // Grenade-cycle - Example
- bind 2 eq_slot5 // Bomb
- bind 3 eq_slot6 // HE Grenade
- bind f eq_slot7 // Flashbang
- bind c eq_slot8 // Smoke Grenade
- bind g eq_slot9 // Decoy Grenade
- bind v eq_slot10 // Molotov/Incendiary Grenade
- bind q eq_lastinv // Quickswitch
- bind mwheeldown eq_invnext // Select next weapon - Example
- bind mwheelup eq_invprev // Select previous weapon - Example
- bind h +drop_slot // Drop-key - Default bind in-game is G
- bind b buy_menu // Buymenu
- // ------------------------------
- // ========== SETTINGS ==========
- // ------------------------------
- // 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.
- // 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.
- // To change which side a slot is on put either switchhandsright or switchhandsleft in the corresponding eq_slot.
- // The example below puts only the knife on the other hand side.
- // Insert any additional settings you wish to add for individual slots (xhair, viewmodel, sensitivity etc.) with a semicolon after each command.
- alias eq_slot1 "slot1; set_slot1; weapon_slot; switchhandsright;" // Primary
- alias eq_slot2 "slot2; set_slot2; weapon_slot; switchhandsright;" // Secondary
- alias eq_slot3 "slot3; set_slot3; weapon_slot; switchhandsleft;" // Melee
- alias eq_slot5 "slot5; set_slot5; weapon_slot; switchhandsright;" // Bomb - Currently can't be mirrored thus switchhands doesn't succeed.
- alias eq_slot6 "slot6; set_slot6; grenade_slot; switchhandsright;" // HE Grenade
- alias eq_slot7 "slot7; set_slot7; grenade_slot; switchhandsright;" // Flashbang
- alias eq_slot8 "slot8; set_slot8; grenade_slot; switchhandsright;" // Smoke Grenade
- alias eq_slot9 "slot9; set_slot9; grenade_slot; switchhandsright;" // Decoy Grenade
- alias eq_slot10 "slot10; set_slot10; grenade_slot; switchhandsright;" // Molotov Grenade - Currently can't be mirrored thus switchhands doesn't succeed on T-side.
- // -------------------------------------------------
- // ==================== LOGIC ======================
- // -------------------------------------------------
- // No touching required.
- // -------- Proper Grenade-cycle functionality
- alias grenade_key "eq_slot6"
- alias grenade_reset "alias grenade_key grenade_slots;"
- alias grenade_slots "eq_slot10; eq_slot9; eq_slot8; eq_slot7; eq_slot6"
- // -------- Drop fix
- alias +drop_slot "drop"
- alias -drop_slot "eq_slot3"
- // -------- Buymenu fix
- alias buy_menu "eq_slot2; eq_slot1; buymenu;"
- // -------- Grenade throw fix
- alias weapon_slot "bind MOUSE1 "+attack"; bind MOUSE2 "+attack2";"
- alias grenade_slot "bind MOUSE1 +grenade_release; bind MOUSE2 +grenade_release2"
- // sets 1 from 2 unactive -> set 2 from 1 active -> activate 1
- 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;"
- // sets 2 from 1 unactive -> set 1 from 2 active -> activate 2
- 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;"
- // -attack -> activate 2 -> 1 from 2 check -> eq_lastinv_NOR1
- alias -grenade_release "-attack; eq_lastinv_NOR_activate_2; eq_lastinv_NOR_deactivate_1_set; eq_lastinv_NOR1;"
- // -attack2 -> activate 1 -> 2 from 1 check -> eq_lastinv_NOR1
- alias -grenade_release2 "-attack2; eq_lastinv_NOR_activate_1; eq_lastinv_NOR_deactivate_2_set; eq_lastinv_NOR2;"
- // Enables NOR 1 & 2
- alias eq_lastinv_NOR_activate_1 "alias eq_lastinv_NOR1 NOR_out_true"
- alias eq_lastinv_NOR_activate_2 "alias eq_lastinv_NOR2 NOR_out_true"
- // 1 from 2 check
- alias eq_lastinv_NOR_deactivate_1_set "alias eq_lastinv_NOR1;"
- // 2 from 1 check
- alias eq_lastinv_NOR_deactivate_2_set "alias eq_lastinv_NOR2;"
- // Activates 1 from 2 deactivation
- alias eq_lastinv_NOR_deactivate_1_from_2_active "alias eq_lastinv_NOR_deactivate_1_set "alias eq_lastinv_NOR1""
- // Activates 2 from 1 deactivation
- alias eq_lastinv_NOR_deactivate_2_from_1_active "alias eq_lastinv_NOR_deactivate_2_set "alias eq_lastinv_NOR2""
- // Unactivates 1 from 2 deactivation
- alias eq_lastinv_NOR_deactivate_1_from_2_unactive "alias eq_lastinv_NOR_deactivate_1_set;"
- // Unactivates 2 from 1 deactivation
- alias eq_lastinv_NOR_deactivate_2_from_1_unactive "alias eq_lastinv_NOR_deactivate_2_set;"
- // NOR gate outputs
- alias eq_lastinv_NOR1 NOR_out_true
- alias eq_lastinv_NOR2 NOR_out_true
- // NOR output true
- alias NOR_out_true "eq_slot2; eq_slot1"
- // -------- Manual Quickswitch functionality slots
- alias set_slot1 "alias eq_invnext eq_slot2; alias eq_invprev eq_slot10; set_lastinv2-10_reset; set_lastinv1_slot; grenade_reset;"
- alias set_slot2 "alias eq_invnext eq_slot3; alias eq_invprev eq_slot1; set_lastinv1_3-10_reset; set_lastinv2_slot; grenade_reset;"
- alias set_slot3 "alias eq_invnext eq_slot5; alias eq_invprev eq_slot2; set_lastinv1-2_5-10_reset; set_lastinv3_slot; grenade_reset;"
- alias set_slot5 "alias eq_invnext eq_slot6; alias eq_invprev eq_slot3; set_lastinv1-3_6-10_reset; set_lastinv5_slot; grenade_reset;"
- 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;"
- 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;"
- 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;"
- 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;"
- 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;"
- // -------- Set_lastinv backend fix
- // Set variables - think of as RAM for keeping track of previous slot & function that clears the RAM
- alias set_lastinv
- alias base_lastinvs "alias set_lastinv;"
- // called from set_slot -> sets eq_lastinv for previous -> empties set_lastinv -> calls set_lastinvX -> empties/nulls itself out
- alias set_lastinv1_slot "set_lastinv; base_lastinvs; set_lastinv1; alias set_lastinv1_slot;"
- alias set_lastinv2_slot "set_lastinv; base_lastinvs; set_lastinv2; alias set_lastinv2_slot;"
- alias set_lastinv3_slot "set_lastinv; base_lastinvs; set_lastinv3; alias set_lastinv3_slot;"
- alias set_lastinv5_slot "set_lastinv; base_lastinvs; set_lastinv5; alias set_lastinv5_slot;"
- alias set_lastinv6_slot "set_lastinv; base_lastinvs; set_lastinv6; alias set_lastinv6_slot;"
- alias set_lastinv7_slot "set_lastinv; base_lastinvs; set_lastinv7; alias set_lastinv7_slot;"
- alias set_lastinv8_slot "set_lastinv; base_lastinvs; set_lastinv8; alias set_lastinv8_slot;"
- alias set_lastinv9_slot "set_lastinv; base_lastinvs; set_lastinv9; alias set_lastinv9_slot;"
- alias set_lastinv10_slot "set_lastinv; base_lastinvs; set_lastinv10; alias set_lastinv10_slot;"
- // doesn't change - aliases set_lastinv so that eq_lastinv is most recent slot
- alias set_lastinv1 "alias set_lastinv alias eq_lastinv eq_slot1"
- alias set_lastinv2 "alias set_lastinv alias eq_lastinv eq_slot2"
- alias set_lastinv3 "alias set_lastinv alias eq_lastinv eq_slot3"
- alias set_lastinv5 "alias set_lastinv alias eq_lastinv eq_slot5"
- alias set_lastinv6 "alias set_lastinv alias eq_lastinv eq_slot6"
- alias set_lastinv7 "alias set_lastinv alias eq_lastinv eq_slot7"
- alias set_lastinv8 "alias set_lastinv alias eq_lastinv eq_slot8"
- alias set_lastinv9 "alias set_lastinv alias eq_lastinv eq_slot9"
- alias set_lastinv10 "alias set_lastinv alias eq_lastinv eq_slot10"
- // doesn't change - alias fills set_lastinvX_slots
- alias set_lastinv1_reset alias set_lastinv1_slot set_lastinv1_reset_slot
- alias set_lastinv1_reset_slot "set_lastinv; base_lastinvs; set_lastinv1; alias set_lastinv1_slot;"
- alias set_lastinv2_reset alias set_lastinv2_slot set_lastinv2_reset_slot
- alias set_lastinv2_reset_slot "set_lastinv; base_lastinvs; set_lastinv2; alias set_lastinv2_slot;"
- alias set_lastinv3_reset alias set_lastinv3_slot set_lastinv3_reset_slot
- alias set_lastinv3_reset_slot "set_lastinv; base_lastinvs; set_lastinv3; alias set_lastinv3_slot;"
- alias set_lastinv5_reset alias set_lastinv5_slot set_lastinv5_reset_slot
- alias set_lastinv5_reset_slot "set_lastinv; base_lastinvs; set_lastinv5; alias set_lastinv5_slot;"
- alias set_lastinv6_reset alias set_lastinv6_slot set_lastinv6_reset_slot
- alias set_lastinv6_reset_slot "set_lastinv; base_lastinvs; set_lastinv6; alias set_lastinv6_slot;"
- alias set_lastinv7_reset alias set_lastinv7_slot set_lastinv7_reset_slot
- alias set_lastinv7_reset_slot "set_lastinv; base_lastinvs; set_lastinv7; alias set_lastinv7_slot;"
- alias set_lastinv8_reset alias set_lastinv8_slot set_lastinv8_reset_slot
- alias set_lastinv8_reset_slot "set_lastinv; base_lastinvs; set_lastinv8; alias set_lastinv8_slot;"
- alias set_lastinv9_reset alias set_lastinv9_slot set_lastinv9_reset_slot
- alias set_lastinv9_reset_slot "set_lastinv; base_lastinvs; set_lastinv9; alias set_lastinv9_slot;"
- alias set_lastinv10_reset alias set_lastinv10_slot set_lastinv10_reset_slot
- alias set_lastinv10_reset_slot "set_lastinv; base_lastinvs; set_lastinv10; alias set_lastinv10_slot;"
- // calls all set_lastinvX_resets that aren't the slot it switched to, resetting the other set_lastinvX_slots
- 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;"
- 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;"
- 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;"
- 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;"
- 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;"
- 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;"
- 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;"
- 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;"
- 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;"
- // -------------------------------------------
- // Logic path if you want to understand it
- // -------------------------------------------
- // Example - switching from secondary to primary
- // eq_slot2 -> eq_slot1
- // eq_slot1 "slot1; set_slot1; weapon_slot; noswitch;"
- // slot1 - takes out your primary (normal game bind)
- // set_slot1 "alias eq_invnext eq_slot2; alias eq_invprev eq_slot10; set_lastinv2-10_reset; set_lastinv1_slot; grenade_reset;"
- // alias eq_invnext eq_slot2
- // alias eq_invprev eq_slot10
- // 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;"
- // set_lastinv2_reset alias set_lastinv2_slot set_lastinv2_reset_slot
- // alias set_lastinv2_reset_slot "set_lastinv; base_lastinvs; set_lastinv2; alias set_lastinv2_slot;"
- // set_lastinv1_slot "set_lastinv; base_lastinvs; set_lastinv1; alias set_lastinv1_slot;"
- // alias eq_lastinv eq_slot2
- // alias set_lastinv ""
- // set_lastinv1 "alias set_lastinv alias eq_lastinv eq_slot1"
- // alias set_lastinv alias eq_lastinv eq_slot1
- // alias set_lastinv1_slot ""
- // grenade_reset "alias grenade_key grenade_slots;"
- // alias grenade_key grenade_slots;
- // grenade_slot "eq_slot10; eq_slot9; eq_slot8; eq_slot7; eq_slot6"
- // weapon_slot "bind MOUSE1 "+attack"; bind MOUSE2 "+attack2";"
- // noswitch "base_hand; set_hand;"
- // base_hand "set_hand; alias set_hand;"
- // set_hand
- // set_hand ""
- // set_hand
- // -------------------------------------------
- // Set slots
- set_slot2
- eq_slot1
- weapon_slot
Add Comment
Please, Sign In to add comment