wonder6oy
Joined: 12 Jun 2008
Posts: 20
Digg It | Posted: Wed Jul 02, 2008 2:10 pm
Post subject: Universal Wiimote - Great for FPS games! -UPDATED!!- | | | v 1.4 = MAJOR RESOLUTION COMPATIBILITY FIXES!!
This is my attempt at something that kind of "does it all", with particular attention being paid to making something really work in the FPS genre referencing Metroid Prime 3 and Medal Of Honor: Heroes 2 for the Wii (the only two that have gotten the controls "right" so far - IMHO). Mode 2 is a close approximation of that approach, minus the moving reticule, plus a few extra features to make up for that.
Though not quite as accurate as a mouse, it is MUCH more accurate than a gamepad, great for single player games on an HDTV, and quite a lot of fun to play!
NOTE: A working "sensor bar" is required for this script! It will not be functional without it. Also, the use of the PPJoy driver is optional but not required on Modes 1 - 3. Only Mode 4 requires it.
I've tested this script on two machines so far. Games tested and working include:
- Call Of Duty 4 (Mode 2)
- Bioshock (Mode 2/3) (kind of sluggish response, though)
- Half Life 2 (Mode 2)
- Portal (Mode 2)
- Psychonauts (Mode 2, PrPoint off)
- Painkiller (Mode 2)
- Crysis (Mode 2)
- Splinter Cell: Chaos Theory (Mode 2, PPJoy on)
- Unreal Tournament 3 (Mode 2)
- Unreal Tournament (original) (Mode 2)
- World Of Warcraft (Mode 3)
- Track Mania Nations Forever (Mode 4)
The only games I've not seen it work well on so far is Quakewars and Bioshock, and I believe that's due to some kind of CPU task priority level.
I hope you enjoy!...
(edit: Tweaking and adding features - check vers#)
download here:
http://www.mediafire.com/?01b2ctvxjbj
Or copy the script from below...
----------------------------------------------
/*
"Universal Wiimote" - by wonder6oy
v1.4
PLEASE READ BEFORE USING!!!
This script features 4 modes of operation. If the current mode
isn't working for you, PRESS AND HOLD THE "Home" BUTTON UNTIL YOU
HEAR THE AUDIBLE BEEP to switch between the two most commonly used
modes (2 and 3).
FEATURES:
----------------
- There are 4 modes of operation:
1. ABSOLUTE POINTER (Home+B): Where you point at the screen is
where the mouse cursor goes. Good for navigating Windows or
starting up a game. Incompatible with many games, unfortunately.
This is the default startup mode.
2. RELATIVE ANALOG (Home): A complex but intuitive blend of
analog and pointer control featuring a transparent "clutch and
braking" system to transition between precision pointing and
analog motion. Excellent for FPS games. For platform style games,
precision pointing mechanism can be disabled (Home+A) for analog
style control only. Compatible with most games that support
mouse input.
3. RELATIVE POINTER (Home): Similar to Absolute Pointer, but
based on IR movement rather than screen position. Frequent
realignment may be necessary. Good for menu navigation in games
that don't support Absolute Pointer mode. Compatible with most
games that support mouse input.
4. DRIVING MODE (Home+Up): Same as Relative Pointer mode but
with tilt control movement sent to the PPJoy driver using 2 axis
(required for this mode) for steering controls. Nunchuk and
function button features are disabled. Compatible with most games
that support both joystick and mouse input.
- Switching modes is confirmed with an audible beep and flashing LED (1-4) from the Wiimote.
- Button "Home" (when pressed and released quickly) is mapped to the
Esc key. Button B and button A are mapped to mouse left-click and
mouse right-click respectively. There is a slight pause when pressing
button B (mouse left-click) in modes 1, 3, and 4 to aid in pointer
accuracy. D-pad up and down are mapped to mouse scroll up and down.
- Nunchuk controller fully supported. Analog stick mapped to WASD
keys respectively (unless using PPJoy mode - see below).
- Buttons 1 and 2 on the Wiimote serve as "function" buttons. While
pressing and holding either button before pressing buttons C, Z,
D-pad, B, or flick motions on the Nunchuk, an alternate key will be
triggered. Buttons 1 and 2 may also be used as normal buttons for
toggle type actions (flashlight, toggle prone, map, etc.). Not
suitable for actions requiring press-and-hold usage (walk, run,
prone(no toggle)) except when using Mode 4 (Driving Mode) where the
function feature is disabled.
- Flick actions Up, Down, Left, and Right on both the Wiimote and
Nunchuk have also been mapped to keys. Function buttons 1 and 2
provide additional key commands to flicks on the Nunchuk only.
Great for weapon reloading, melee attacks, grenade toss, etc.
- Short rumble burst when pressing the B button.
- PPJoy Enable (Home+Nunchuk Analog Up) replaces the WASD keystrokes
sent from the analog stick with actual analog data sent to the PPJoy
driver (2 axis) for true analog control. Excellent for games that
support speed of movement via joystick input (i.e. Splinter Cell,
Tomb Raider, etc.)
- Battery indicator on Wiimote
- Through the use of function buttons, all letters on the keyboard
as well as numbers 0-9 have been mapped to the Wiimote/Nunchuk combo.
Default assignments are a good starting point for most FPS games.
Key assignments are as follows:
Wiimote.Home (press and hold) = Toggle Mode 2 / Mode 3
Wiimote.Home + Wiimote.B = Mode 1
Wiimote.Home + Wiimote.Up = Mode 4
Wiimote.Home + Wiimote.A = Toggle Mode 2 Precision Pointer Off/On
Wiimote.Home + Nunchuk.Analog Up = Toggle PPJoy Mode On/Off
Wiimote.Home (quick press and release) = key.Escape
Wiimote.A = Mouse.RightClick
Wiimote.B = Mouse.Leftclick
Wiimote.Plus = Key.Shift
Wiimote.Minus = Key.E
Wiimote.Up = Mouse.WheelUp
Wiimote.Left = Key.Q
Wiimote.Down = Mouse.WheelDown
Wiimote.Right = Key.G
Wiimote.One (press and release) = Key.F
Wiimote Two (press and release) = Key.C
Wiimote.Flick Up = Key.Y
Wiimote.Flick Left = Key.T
Wiimote.Flick Down = Key.H
Wiimote.Flick Right = Key.R
Nunchuk.Z = Key.Space
Nunchuk.C = Key.Ctrl
Nunchuk.Analog Up = Key.W
Nunchuk.Analog Left = Key.A
Nunchuk.Analog Down = Key.S
Nunchuk.Analog Right = Key.D
Nunchuk.Flick Up = Key.U
Nunchuk.Flick Left = Key.O
Nunchuk.Flick Down = Key.I
Nunchuk.Flick Right = Key.P
Additional Function Buttons:
WIIMOTE.ONE (press and hold) + ...
Wiimote.A = Key.5
Wiimote.B = Key.X
Wiimote.Up = Key.1
Wiimote.Left = Key.2
Wiimote.Down = Key.3
Wiimote.Right = Key.4
Nunchuk.Z = Key.Z
Nunchuk.C = Key.Alt
Nunchuk.Flick Up = Key.K
Nunchuk.Flick Left = Key.J
Nunchuk.Flick Down = Key.M
Nunchuk.Flick Right = Key.L
WIIMOTE.TWO (press and hold) + ...
Wiimote.A = Key.0
Wiimote.B = Key.V
Wiimote.Up = Key.6
Wiimote.Left = Key.7
Wiimote.Down = Key.8
Wiimote.Right = Key.9
Nunchuk.Z = Key.N
Nunchuk.C = Key.B
Nunchuk.Flick Up = Key.M
Nunchuk.Flick Left = Key.L
Nunchuk.Flick Down = Key.K
Nunchuk.Flick Right = Key.J
*/
//This script written with a screen resolution = 1280/720
pie.framerate = 120
if var.mode = 0 then
var.mode = 1
var.precision = 1
endif
//Wiimote IR input - based off of a script by jeromote
var.x = (smooth(Wiimote1.pointerX - 1/2)*2.9) *((Screen.Width*(1280 pixels/Screen.Width))*1/2)
var.y = (smooth(Wiimote1.pointerY - 1/2)*2.9) *((Screen.Height*(720 pixels/Screen.Height))*1/2)+80
//Mode 1
if var.mode = 1 and var.hold = 0 then
mouse.CursorPosX = smooth((Screen.Width*1/2) + var.x,3)
mouse.CursorPosY = smooth((Screen.Height*1/2)+ var.y,3)
endif
//Mode 3
if var.mode >= 3 and var.hold = 0 then
if smooth(Wiimote1.pointerX,5) > .1 and smooth(Wiimote1.pointerX,5) < .9 then
var.monex = (var.x-var.trx)/(3/(RemoveUnits(Screen.Width)/1280))
endif
if smooth(Wiimote1.pointerY,5) > .1 and smooth(Wiimote1.pointerY,5) < .9 then
var.money = (var.y-var.try)/(3/(RemoveUnits(Screen.Height)/720))
endif
var.fmpx = var.fmpx + var.monex
var.fmpy = var.fmpy + var.money
var.trx = var.x
var.try = var.y
FakeMouse.DirectInputX = smooth(var.fmpx,0)
FakeMouse.DirectInputY = smooth(var.fmpy,0)
endif
//Analog Movement with "deadzone"
var.boxsize = 20 //"deadzone" (default 20)
var.xsens = 1 // analog x-axis sensitivity (default 1)
var.ysens = 1 // analog y-axis sensitivity (default 1) (same as x = 1.75)
var.fsens = 12 //precision pointer sensitivity-lower is faster(default 12)
if var.x < 0 then
var.px = -1
var.vx = var.x*-1
else
var.px = 1
var.vx = var.x
endif
if var.y < 0 then
var.py = -1
var.vy = var.y*-1
else
var.py = 1
var.vy = var.y
endif
if var.vx > (var.boxsize) then
var.sx = ((var.vx-var.boxsize)^2+(var.vx/2))/500*var.px
else
var.sx = 0
endif
if var.vy > (var.boxsize) then
var.sy = ((var.vy-var.boxsize)^2+(var.vy/2))/500*var.py
else
var.sy = 0
endif
if var.sx >700 then
var.sx = 700
elseif var.sx <-700 then
var.sx = -700
endif
if var.sy >400 then
var.sy = 400
elseif var.sy <-400 then
var.sy = -400
endif
var.analogx = var.analogx + ((var.sx/140)*(var.xsens*(RemoveUnits(Screen.Width)/1280)))// 140 = old var.asens
var.analogy = var.analogy + ((var.sy/140)*(var.ysens*(RemoveUnits(Screen.Height)/720)))
var.stepx = ((var.x+5000)-var.stepxb)/(var.fsens/(RemoveUnits(Screen.Width)/1280))
var.stepxb = var.x+5000
var.stepy = ((var.y+5000)-var.stepyb)/(var.fsens/(RemoveUnits(Screen.Height)/720))
var.stepyb = var.y+5000
var.range = 600 // (default 600)
var.fborder = 400 // (default 400)
var.brakepoint = 200 // (default 200)
var.brakespeed = .064 // (default .064)
var.react = 5 // (default 5)
var.fmx = (var.vx - var.range)*-1
if var.fmx < 0 then
var.fmx = 0
elseif var.fmx > var.fborder then
var.fmx = var.fborder
endif
var.fmx = var.fmx/var.fborder
var.fmy = (var.vy - var.range)*-1
if var.fmy < 0 then
var.fmy = 0
elseif var.fmy > var.fborder then
var.fmy = var.fborder
endif
var.fmy = var.fmy/var.fborder
//Braking Mechanism
if var.vx > var.brakepoint and (var.x*var.stepx) < 0 then
var.brake = 0
var.reactb = 0
elseif var.vy > var.brakepoint and (var.y*var.stepy) < 0 then
var.brake = 0
var.reactb = 0
endif
if var.vx < var.brakepoint and var.brake < 1 then
wait 10ms
var.brake = var.brake + var.brakespeed
var.reactb = var.reactb + 1
elseif var.vy < var.brakepoint and var.brake < 1 then
wait 10ms
var.brake = var.brake + var.brakespeed
var.reactb = var.reactb + 1
endif
if var.react > var.reactb then
var.brake = 0
endif
var.freelookx = var.freelookx + (var.stepx*(var.fmx)*var.brake)*(var.precision)
var.freelooky = var.freelooky + (var.stepy*(var.fmy)*var.brake)*(var.precision)
//Mode 2
if var.mode = 2 then
FakeMouse.DirectInputX = var.freelookx + var.analogx
FakeMouse.DirectInputY = var.freelooky + var.analogy
endif
//Key assignments
if var.ppjenable = 0 then
key.w = Wiimote.Nunchuk.JoyY < -30%
key.s = Wiimote.Nunchuk.JoyY > 30%
key.a = Wiimote.Nunchuk.JoyX < -30%
key.d = Wiimote.Nunchuk.JoyX > 30%
else
key.w = false
key.s = false
key.a = false
key.d = false
endif
key.e = Wiimote.Minus
key.shift = Wiimote.Plus
//extra function button assignments
if wiimote.one = true and var.mode <>4 then
var.wone = 1
endif
if wiimote.two = true and var.mode <>4 then
var.wtwo = 1
endif
if (wiimote.one and Wiimote.Nunchuk.ZButton) or (wiimote.one and wiimote.nunchuk.cbutton) or (wiimote.one and wiimote.b) or (wiimote.one and wiimote.a) or (wiimote.one and wiimote.up) or (wiimote.one and wiimote.down) or (wiimote.one and wiimote.left) or (wiimote.one and wiimote.right) then
var.wbm = 1
endif
if (wiimote.two and Wiimote.Nunchuk.ZButton) or (wiimote.two and wiimote.nunchuk.cbutton) or (wiimote.two and wiimote.b) or (wiimote.two and wiimote.a) or (wiimote.two and wiimote.up) or (wiimote.two and wiimote.down) or (wiimote.two and wiimote.left) or (wiimote.two and wiimote.right) then
var.wbm = 1
endif
if var.wbm = 0 and wiimote.one = false and var.wone = 1 and var.mode <>4 then
key.f = true
wait 10ms
key.f = false
var.wone = 0
endif
if var.wbm = 0 and wiimote.two = false and var.wtwo = 1 and var.mode <>4 then
key.c = true
wait 10ms
key.c = false
var.wtwo = 0
endif
if wiimote.one=false and wiimote.two=false and wiimote.a=false and wiimote.b=false and wiimote.up=false and wiimote.left=false and wiimote.down=false and wiimote.right=false and wiimote.nunchuk.zbutton=false and wiimote.nunchuk.cbutton=false then
var.wbm = 0
var.wone = 0
var.wtwo = 0
key.z = false
key.alt = false
key.x = false
key.n = false
key.b = false
key.v = false
key.1 = false
key.2 = false
key.3 = false
key.4 = false
key.5 = false
key.6 = false
key.7 = false
key.8 = false
key.9 = false
key.0 = false
endif
if var.wone = 1 then
key.z = wiimote.nunchuk.zbutton
key.alt = wiimote.nunchuk.cbutton
key.x = wiimote.b
key.1 = Wiimote.Up
key.2 = Wiimote.Left
key.3 = Wiimote.Down
key.4 = Wiimote.Right
key.5 = Wiimote.A
endif
if var.wtwo = 1 then
key.n = wiimote.nunchuk.zbutton
key.b = wiimote.nunchuk.cbutton
key.v = wiimote.b
key.6 = Wiimote.Up
key.7 = Wiimote.Left
key.8 = Wiimote.Down
key.9 = Wiimote.Right
key.0 = Wiimote.A
endif
if var.wone = 0 and var.wtwo = 0 and var.mode <>4 and wiimote.home <> true then
key.space = wiimote.nunchuk.zbutton
key.ctrl = wiimote.nunchuk.cbutton
mouse.LeftButton = wiimote.B
key.q = Wiimote.Left
key.g = Wiimote.Right
Mouse.RightButton = Wiimote.A
if Wiimote.Up = true then
mouse.wheelup = true
mouse.wheelup = false
wait 150ms
endif
if Wiimote.Down = true then
mouse.wheeldown = true
mouse.wheeldown = false
wait 150ms
endif
endif
if var.mode = 4 and wiimote.home <> true then
mouse.LeftButton = wiimote.B
mouse.RightButton = Wiimote.A
key.f = wiimote.One
key.c = wiimote.Two
key.w = wiimote.Up
key.s = wiimote.Down
key.a = wiimote.Left
key.d = wiimote.Right
endif
//Button B Pause
if var.mode <> 2 and Wiimote.B = true and var.hold = 0 and var.holdt = 0 then
var.hold = 1
var.holdt = 1
wait 300ms
var.hold = 0
endif
if Wiimote.B = false then var.holdt = 0
endif
//Button B Rumble
if Wiimote.B = true and var.rt = 0 then
var.rt=1
Wiimote.rumble = 1
wait 50ms
Wiimote.rumble = 0
endif
if Wiimote.B = false and var.rt = 1 then
var.rt = 0
endif
//Mode selector with audio notification
wiimote.volume = .2
if !var.init
var.HeldTime = 400ms
var.init = true
endif
if Released(Wiimote.Home) then
if !var.Held then
Press(key.esc)
wait 25ms
Release(key.esc)
else
var.Held = false
endif
else if Pressed(HeldDown(Wiimote.Home, var.HeldTime)) then
wiimote.frequency = 900
wait 200ms
wiimote.frequency= 0
var.Held = true
var.switch = 0
if wiimote.B = true then
var.mode = 1
var.switch = 1
endif
if wiimote.up = true then
var.mode = 4
var.switch = 1
endif
if Wiimote.A = true then
if var.precision = 1 then
var.precision = 0
var.switch = 1
else var.precision = 1
var.switch = 1
endif
if wiimote.Nunchuk.JoyY < -.5 then
if var.ppjenable = 1 then
var.ppjenable = 0
var.switch = 1
else var.ppjenable = 1
var.switch = 1
endif
//inside
if var.mode <> 3 and var.switch <> 1 then
var.mode = 3
var.switch = 1
else if var.mode = 3 and var.switch <> 1 then
var.mode = 2
var.switch = 1
endif
endif
endif
endif
//Flashing LED Mode Indicator
if var.ledmode <> var.mode then
var.ledmodei = 1
if var.mode = 1 then
var.led = 1
endif
if var.mode = 2 then
var.led = 2
endif
if var.mode = 3 then
var.led = 4
endif
if var.mode = 4 then
var.led = 8
endif
Wiimote.leds = var.led
wait 250ms
Wiimote.leds = 0
wait 250ms
Wiimote.leds = var.led
wait 250ms
Wiimote.leds = 0
wait 250ms
Wiimote.leds = var.led
wait 250ms
Wiimote.leds = 0
wait 250ms
var.ledmodei = 0
endif
var.ledmode = var.mode
//LED Battery Indicator
if var.ledmodei <> 1 then
if wiimote1.Battery <= 54 then
Wiimote.leds = 1
endif
if wiimote1.Battery <= 69 and >=55 then
Wiimote.leds = 3
endif
if wiimote1.Battery <=89 and >=70 then
Wiimote.leds = 7
endif
if wiimote1.Battery >=90 then
Wiimote.leds = 15
endif
endif
/* Ultimate Flick Script Tidbit v1.1
(slightly modded by wonder6oy)
***********************************************************
* Created by Rhys Legault *
* rhyslegault@hotmail.com *
* Last Modified: June 5th, 2007 *
***********************************************************
* Feel free to use, modify and redistribute this script *
***********************************************************
*
* About:
* This script detects directional flicks of the Wiimote and Nunchuk.
* Example functionality translates flick actions to similar directional
* key presses(up, down, left, right) & speaks the action out loud.
*
* Just copy and paste required script section(s) into your script and
* add your own custom functionality.
*/
//Amount of time allowed between sequence actions
PIE.SeqReadGap = 50ms
//Amount of accelation required for action to occur
var.AccelerationThreshold = 1.4
//Amount of time between a flick action
var.ActionGap = 150ms
//Amount of time to hold key press
//Used in example functionality (Delete if unused in custom functionality)
var.HoldKey = 50ms
if var.WiimoteFlick = false
//Flick Wiimote up
if (Wiimote.gy > var.AccelerationThreshold, Wiimote.gy < -var.AccelerationThreshold)
var.WiimoteFlick = true
//Custom script functionality starts here
//say "Wiimote up"
Press key.y
wait var.HoldKey
Release key.y
//Custom script functionality ends here
wait var.ActionGap
var.WiimoteFlick = false
//Flick Wiimote down
elseif (Wiimote.gy < -var.AccelerationThreshold, Wiimote.gy > var.AccelerationThreshold)
var.WiimoteFlick = true
//Custom script functionality starts here
//say "Wiimote down"
Press key.h
wait var.HoldKey
Release key.h
//Custom script functionality ends here
wait var.ActionGap
var.WiimoteFlick = false
//Flick Wiimote left
elseif (Wiimote.gx < -var.AccelerationThreshold, Wiimote.gx > var.AccelerationThreshold)
var.WiimoteFlick = true
//Custom script functionality starts here
//say "Wiimote Left"
Press key.t
wait var.HoldKey
Release key.t
//Custom script functionality ends here
wait var.ActionGap
var.WiimoteFlick = false
//Flick Wiimote right
elseif (Wiimote.gx > var.AccelerationThreshold, Wiimote.gx < -var.AccelerationThreshold)
var.WiimoteFlick = true
//Custom script functionality starts here
//say "Wiimote Right"
Press key.r
wait var.HoldKey
Release key.r
//Custom script functionality ends here
wait var.ActionGap
var.WiimoteFlick = false
endif
endif
if var.NunchukFlick = false
//Flick Nunchuk up
if (Wiimote.Nunchuk.gy > var.AccelerationThreshold, Wiimote.Nunchuk.gy < -var.AccelerationThreshold)
var.NunchukFlick = true
//Custom script functionality starts here
//say "Nun chuk up"
if var.wone = 1 then
var.wbm = 1
Press key.k
wait var.HoldKey
Release key.k
endif
if var.wtwo = 1 then
var.wbm = 1
Press key.m
wait var.HoldKey
Release key.m
endif
if var.wone = 0 and var.wtwo = 0 then
Press key.u
wait var.HoldKey
Release key.u
endif
//Custom script functionality ends here
wait var.ActionGap
var.NunchukFlick = false
//Flick Nunchuk down
elseif (Wiimote.Nunchuk.gy < -var.AccelerationThreshold, Wiimote.Nunchuk.gy > var.AccelerationThreshold)
var.NunchukFlick = true
//Custom script functionality starts here
//say "Nun chuk down"
if var.wone = 1 then
var.wbm = 1
Press key.m
wait var.HoldKey
Release key.m
endif
if var.wtwo = 1 then
var.wbm = 1
Press key.k
wait var.HoldKey
Release key.k
endif
if var.wone = 0 and var.wtwo = 0 then
Press key.i
wait var.HoldKey
Release key.i
endif
//Custom script functionality ends here
wait var.ActionGap
var.NunchukFlick = false
//Flick Nunchuk left
elseif (Wiimote.Nunchuk.gx < -var.AccelerationThreshold, Wiimote.Nunchuk.gx > var.AccelerationThreshold)
var.NunchukFlick = true
//Custom script functionality starts here
//say "Nun chuk Left"
if var.wone = 1 then
var.wbm = 1
Press key.j
wait var.HoldKey
Release key.j
endif
if var.wtwo = 1 then
var.wbm = 1
Press key.l
wait var.HoldKey
Release key.l
endif
if var.wone = 0 and var.wtwo = 0 then
Press key.o
wait var.HoldKey
Release key.o
endif
//Custom script functionality ends here
wait var.ActionGap
var.NunchukFlick = false
//Flick Nunchuk right
elseif (Wiimote.Nunchuk.gx > var.AccelerationThreshold, Wiimote.Nunchuk.gx < -var.AccelerationThreshold)
var.NunchukFlick = true
//Custom script functionality starts here
//say "Nun chuk Right"
if var.wone = 1 then
var.wbm = 1
Press key.l
wait var.HoldKey
Release key.l
endif
if var.wtwo = 1 then
var.wbm = 1
Press key.j
wait var.HoldKey
Release key.j
endif
if var.wone = 0 and var.wtwo = 0 then
Press key.p
wait var.HoldKey
Release key.p
endif
//Custom script functionality ends here
wait var.ActionGap
var.NunchukFlick = false
endif
endif
//*********************************************************
//PPJoy Enable
if var.ppjenable = 1 then
PPJoy1.Analog0 = MapRange(Wiimote.Nunchuk.JoyX, -1,1, -1,1)
PPJoy1.Analog1 = MapRange(Wiimote.Nunchuk.JoyY, -1,1, -1,1)
else
PPJoy1.Analog0 = 0
PPJoy1.Analog1 = 0
endif
//Driving Mode
if var.mode = 4 then
PPJoy1.Analog0 = (smooth((MapRange(Wiimote.gz, -1,1, -1,1)),10)+.25)*2
PPJoy1.Analog1 = (smooth((MapRange(Wiimote.gx, -1,1, -1,1)),10)+.25)*2
endif
|
|