Quote Originally Posted by Unregistered View Post
How do you update the game on PC? I'm using bluestacks to emulate the app extracting the APK from my phone.
Just launch FapCeoLauncher2.0.exe it will update the game version to the last one.
It works even sanboxed:
Code:
"C:\Program Files\Sandboxie\Start.exe" /box:DefaultBox "C:\Users\username\AppData\Roaming\Fap CEO\FapCeoLauncher2.0.exe"
I use autohotkey for the mouse clicks. The next step may be reversing Unity with a tool like dnSpy but it would ruin the fun for sure ... and it is an evil hack so I will NOT do that... )

AHK Mouse script ( just install AHK and run the script or... right click compil .exe ) : it works on the choosen game windows at 25 or even 30 clicks per second for me:


Press (Alt + Backspace) to toggle autoclicker `n Press (F1) for options
( I also use a mouse configuration with button 4 of my mouse to L Alt+ Backspace and Button 3 linked to F1 it works like a charm )
Code:
;Gh0stM0use v4.2.3 by Gh0st
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#MaxHotkeysPerInterval 200
#InstallKeybdHook
#SingleInstance, Force
DetectHiddenWindows, on
SetControlDelay -1
SetBatchLines -1
Thread, Interrupt, 0
SetFormat, float, 0.0

toggle := false
inputPresent := false
mouseMoved := false
settingPoints := false

clickRate := 40
Mode := 0
pmx := 0
pmy := 0

totalClicks := 1
currentClick := 1

TempRateCPS := 25
TempRateSPC := 1

setTimer, checkMouseMovement, 10

setTimer, setTip, 5
TTStart = %A_TickCount%
while (A_TickCount - TTStart < 5000 && !toggle)
{
  TooltipMsg = Press (Alt + Backspace) to toggle autoclicker `n Press (F1) for options
}
  TooltipMsg = working at %clickRate%

F1::
  IfWinNotExist, NIAC Settings
  {
    if settingPoints
    {
      toggle := false
      settingPoints := false
      actWin :=
      TooltipMsg =
    }

    prevTC := totalClicks

    Gui, Show, w210 h160, NIAC Settings
    Gui, Add, Radio, x25 y10 gActEdit1 vmode, Clicks per second:
    Gui, Add, Radio, x25 y35 gActEdit2, Seconds per click:
    Gui, Add, Edit, x135 y8 w50 Number Left vtempRateCPS, % tempRateCPS
    Gui, Add, Edit, x135 y33 w50 Number Left vtempRateSPC, % tempRateSPC
    Gui, Add, Text, x30 y65, Total click locations:
    Gui, Add, Edit, x133 y63 w50 Number Left vtotalClicks, % totalClicks
    Gui, Add, Text, x0 w210 0x10
    Gui, Add, Text, x27 y100, (Default is 25 clicks per second)
    Gui, Add, Button, x60 y117 gReset, Reset
    Gui, Add, Button, x112 y117 Default gSetVal, Set
    Gui, Font, s6
    Gui, Add, Text, x157 y150, V 4.2.3 by Gh0st
    if mode < 2
    {
      GuiControl,, Mode, 1
      GoSub, ActEdit1
    }
    else
    {
      GuiControl,, Seconds per click:, 1
      GoSub, ActEdit2
    }
  }
  else
    WinActivate, NIAC Settings
return

ActEdit1:
  GuiControl, Enable, tempRateCPS
  GuiControl, Disable, tempRateSPC
  GuiControl, Focus, tempRateCPS
  Send +{End}
return

ActEdit2:
  GuiControl, Enable, tempRateSPC
  GuiControl, Disable, tempRateCPS
  GuiControl, Focus, tempRateSPC
  Send +{End}
return

Reset:
  toggle := false
  actWin :=
  setTimer, autoClick, off
  currentClick := 1
  GuiControl, Disable, Reset
  Gui, Font, s8
  Gui, Add, Text, x54 y145, Click locations reset.
return

SetVal:
  Gui, Submit
  if mode < 2
    clickRate := tempRateCPS > 0 ? 1000 / tempRateCPS : 1000
  else
    clickRate := tempRateSPC > 0 ? 1000 * tempRateSPC : 1000
  if totalClicks != %prevTC%
  {
    toggle := false
    actWin :=
    setTimer, autoClick, off
  }
GuiClose:
  if toggle
  {
    EmptyMem()
    setTimer, autoclick, %clickRate%
  }
  Gui, Destroy
return

!Backspace::
  
  IfWinNotExist, NIAC Settings ; Only functional if options window is not open
  {
    toggle := !toggle
    if toggle
    {
      setTimer, setTip, 5
      if (!actWin) ; actWin value is also used to determine if checks are set. If they aren't:
      {
        settingPoints := true ; Used to allow break if options are opened
        Loop, %totalClicks%
        {
          if totalClicks < 2
            TooltipMsg = Click the desired autoclick location.
          else
            TooltipMsg = Click the location for point %A_Index%.
          toggle := false
          Keywait, LButton, D
          Keywait, LButton
          if !settingPoints ; Opening options sets this to false, breaking the loop
            return
          TooltipMsg = 
          newIndex := A_Index - 1
          MouseGetPos, xp%newIndex%, yp%newIndex%
          WinGet, actWin, ID, A
        }
        settingPoints := false
      }
      else ; If values ARE set (actWin contains data):
      {
        settingPoints := false
        setTimer, setTip, 5
        TTStart = %A_TickCount%
        TooltipMsg = ##Autoclick enabled. %clickRate% | %totalClicks%
      }
      toggle := true
      EmptyMem()
      setTimer, autoclick, %clickRate%
    }
    else
    {
       setTimer, setTip, 5
       TTStart = %A_TickCount%
       TooltipMsg = ##Autoclick disabled.
       setTimer, autoclick, off
    }
  }
return

setTip:
  StringReplace, cleanTTM, TooltipMsg, ##
  Tooltip, % cleanTTM
  if (InStr(TooltipMsg, "##") && A_TickCount - TTStart > 1000)
    TooltipMsg =
  if TooltipMsg =
  {
    Tooltip
    setTimer, setTip, off
  }
return

checkMouseMovement:
  if (WinExist("ahk_id" . actWin) || !actWin) ; If NIAC is clicking in a window, or the window isn't set, it's all good.
  {
    MouseGetPos, tx, ty
    if (tx == pmx && ty == pmy)
      mouseMoved := false
    else
      mouseMoved := true
    pmx := tx
    pmy := ty
  }
  else ; Otherwise, the target window has been closed.
  {
    Msgbox, 4, NIAC, Target window has been closed, `n Do you want to close Autoclicker as well?
    IfMsgBox Yes
      ExitApp
    else
    {
      actWin :=
      toggle := false
    }
  }
return

autoclick:
  if !(WinActive("ahk_id" . actWin) && (A_TimeIdlePhysical < 50 && !mouseMoved))
  {
    cx := xp%currentClick%
    cy := yp%currentClick%
    ControlClick, x%cx% y%cy%, ahk_id %actWin%,,,, NA
    currentClick := % Mod(currentClick + 1, totalClicks)
  }
return

~*LButton up::
return

#If WinActive("ahk_id" . actWin) && toggle
$~*LButton::
  MouseGetPos,,, winClick
  if winClick = %actWin%
    setTimer, autoclick, off
  Send {Blind}{LButton Down}
return

$~*LButton up::
  IfWinNotExist, NIAC Settings
    setTimer, autoclick, %clickRate%
  Send {Blind}{LButton Up}
return

EmptyMem()
{
  pid:= DllCall("GetCurrentProcessId")
  h:=DllCall("OpenProcess", "UInt", 0x001F0FFF, "Int", 0, "Int", pid)
  DllCall("SetProcessWorkingSetSize", "UInt", h, "Int", -1, "Int", -1)
  DllCall("CloseHandle", "Int", h)
}