XimLink Scripts
A collection of scripts for Xim Link. Currently for BlackOps Cold War.
This is meant to be the contents of the folder located at:
%USER%\My Documents\Xim Link\Scripts
Most configuration happens in the weapons.ini
file.
An example entry:
[ak74u]
name=AK-74u
damage=27
rpm=697
degrees=200
speed=23
name = Name of the gun. Meant to display on the as-yet non-existent GUI
damage = The minimum amount of damage the gun does. The damage at its furthest effective range
rpm = Rounds per Minute
degrees = Up being 0, incrementing clockwise
speed = How much to move the stick
A weapon's degree
and speed
properties dictate how the recoil compensation behaves.
Speed is how far you would need to push the analog joystick on your controller in order to compensate for the recoil. Values are from 21 - 100.
Degree is the compensation direction, from 0-360, starting at the top going clockwise
For a weapon whose recoil is straight up at a small rate, a setting of
degrees=180
speed=30
might work.
Some weapons have changing recoil patterns. The FFAR and Groza assault rifles are a good example of this, creating "S"-shaped recoil patterns throughout their firing. In most cases, the full amount of bullets required to down a foe will leave the gun before the recoil pattern changes direction.
For this reason, giving a configuration entry the damage
and rpm
values will allow you to
"pulse" or "burst" a fully-automatic weapon. Since the first leg of the "S" pattern is predictable,
and all that is necessary to log a kill, we can also provide recoil compensation for it as well.
This formula demonstrates the calculation of the shortest amount of time to hold the trigger necessary to kill a player
health = 150
# ak74u
damage=27 # at its furthest distance
rpm=697
shots to kill (STK) = health / damage + 1 = 6
time to kill (TTK) = STK / (RPM / 60) = 516ms
Thus holding the trigger for 516ms will provide enough TTK while incurring the least amount of recoil in the most predictable pattern.
The helpers.ahk
file contains the definition of the functions that are called when squeezing the
trigger.
You have the following options:
;; bursts a weapon and performs anti-recoil for the duration
;; of the weapon's ttk (times any multipliers)
antiRecoilBurst(weapon)
;; bursts a weapon without AR
onlyBurst(weapon)
;; perform only anti-recoil logic, no bursting
onlyAntiRecoil(weapon)
;; autofire a semi-auto weapon n times
autofire(times)
;; quickscope on unique, only left-mouse-btn presses
;; operate as normal fire if held together with right-mouse-btn
quickscope(ads_time)
;; repeatedly fires akimbo weapons
dualAuto(times)
The following is a blank template for creating a new weapon profile.
#Include %A_AppData%\XIM Link\ScriptAdditionals\AHK_ADDITIONALS.ahk
#Include %A_MyDocuments%\XIM Link\Scripts\lib\helpers.ahk
#NoEnv
;; Configuration Variables
gun_id := "$GUN_ID"
config := build_config(gun_id)
gun := new Weapon(config, health)
~LButton::fireHandler(func("$DESIRED_FUNCTION_HERE"), $funcArg1, burst_sleep)
;; optional
;; #Include %A_MyDocuments%\XIM Link\Scripts\lib\bindings.ahk
Reload Cancel
If the Left Mouse button is pressed within 1.5 seconds, the average reload time in-game, a reload cancel will be sent. (Double-taps weapon swap key)
Slide Cancel
Pressing LCtrl
down will begin a slide if the character is sprtinging. A 'cancel' will be sent when Lctrl
is released
180 Turn
WheelDown will turn the player 180 degrees nearly instantly