Botting in Linux menu

User Tag List

Results 1 to 4 of 4
  1. #1
    32 bit's Avatar Member
    Reputation
    1
    Join Date
    Aug 2015
    Posts
    5
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Botting in Linux

    Greetings,

    I realize this may seem awkward to introduce myself here, but since I will be spending all my time here. This thread will contain all of the things you can do with Neverwinter Online assuming you are willing to use Linux or at the very least dual-boot Linux. First some of you maybe asking, "How can you run NWO in Linux? That is not possible!".

    I use an overlay (it is not an emulator) called WINE. After a simple installation of wine I use a script to run NWO, and completely without the Arc Launcher.

    This is the script I run to execute NWO and login with my password... but of course I omitted my password. I have several accounts so I have several of these scripts with a variety of passwords and user IDs. It never pays to be obvious.

    Code:
    #!/bin/bash
    gamepath="$('pwd')"
    export WINEPREFIX="/home/operator/.wine-nw-1"
    cd "$gamepath"
    wine Neverwinter.exe &
    a=0
    until ((a>0)) 
    
    do sleep 1 a=$(wmctrl -l | grep -c Neverwinter) done
    x=$(xdotool search --name "Neverwinter") xdotool windowactivate --sync $x sleep 5 xdotool type n0tmyp4ssw0rd sleep 0.5 xdotool key Return
    "xdotool" is a program native to Linux that functions much the same way AutoIT or AutoHotKey works in Windows. But there is no need to compile the script. To send a single key to the window; xdotool key Return for example sends the Return key. While xdotool type <string> will type an entire line.

    It is not easier to learn bash scripting or all the tools you will want or need to run like this, however the benefit is WINE blocks any and all attempts to scan or find the processes running such as bots. If people are interested, I will return to this thread with more examples in the near future.

    Botting in Linux
  2. #2
    32 bit's Avatar Member
    Reputation
    1
    Join Date
    Aug 2015
    Posts
    5
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by RottenMind View Post
    . looked you linux stuff... I still run this imagebot + gateway. Only negative I saw with it is that it swap accounts all the time... I mean that gateway script knows when and where is next finishing or what account has empty slots, but imagesearch just go and poke all to see if there is something todo...

    Command console is litle bit dangerous, if click wrong item - you look fool, if you send wrong text to ZONE- you are BOT... so as long we dont interact directly with game API that long we must use some other method to make sure where we are and that we click buttons and dont use "Enter" key. (enter key send text or information... mouse click will not do that eg. type wrong information to "ZONE chatbox" and try send it by mouseclick, not work "send Enter" and whoops what did I say in ZONE...)

    Anyway it will be fun to see what can be done with it and if Linux system can run NW -client wiht lower system resources -dream on.
    For over a year now, I have successfully ran NW without lowered system resources. It is not a dream. Instead of AutoIT, I use xdotool and a few other Linux based programs to send both mouse and keyboard commands to the window.

    Basically what I am experimenting with at the moment is /genaddwindow <command> I want to pull up and start any Leadership task using a single key bind. Then send that key on my timer script. Like 'Battle the Undead' every 6 hours or 'Protect the Caravan' every 2 hours. Most of the bots I have written in past (some in AutoIT) are blind and don't need to see anything on the screen. Here is an example I used for years on Guild Wars, but will work with any MMO.

    Code:
    $Wintitle = InputBox ("Welcome to Macro 2","Enter Window Name:")
    
    If Not WinExists($Wintitle) Then
        MsgBox(0, "", "Please run " & $Wintitle & @CRLF & "then click OK.")
    EndIf
    If Not WinExists($Wintitle) Then
        Exit
    EndIf
    ;read setup file
    $file = FileOpen ("MAC.TXT",0)
    $mask = FileReadLine ($file)
    $macro = StringSplit ($mask,":")
    HotKeySet ($macro [1],"macro1")
    $mac1 = $macro [2]
    $mask = FileReadLine ($file)
    $macro = StringSplit ($mask,":")
    HotKeySet ($macro [1],"macro2")
    $mac2 = $macro [2]
    $mask = FileReadLine ($file)
    $macro = StringSplit ($mask,":")
    HotKeySet ($macro [1],"macro3")
    $mac3 = $macro [2]
    $mask = FileReadLine ($file)
    $macro = StringSplit ($mask,":")
    HotKeySet ($macro [1],"macro4")
    $mac4 = $macro [2]
    $mask = FileReadLine ($file)
    $macro = StringSplit ($mask,":")
    HotKeySet ($macro [1],"macro5")
    $mac5 = $macro [2]
    $mask = FileReadLine ($file)
    $macro = StringSplit ($mask,":")
    HotKeySet ($macro [1],"macro6")
    $mac6 = $macro [2]
    $mask = FileReadLine ($file)
    $macro = StringSplit ($mask,":")
    HotKeySet ($macro [1],"macro7")
    $mac7 = $macro [2]
    $mask = FileReadLine ($file)
    $macro = StringSplit ($mask,":")
    HotKeySet ($macro [1],"macro8")
    $mac8 = $macro [2]
    $mask = FileReadLine ($file)
    $macro = StringSplit ($mask,":")
    HotKeySet ($macro [1],"macro9")
    $mac9 = $macro [2]
    $pc1 = 0
    $time1 = 0
    $pc2 = 0
    $time2 = 0
    $pc3 = 0
    $time3 = 0
    $pc4 = 0
    $time4 = 0
    $pc5 = 0
    $time5 = 0
    $pc6 = 0
    $time6 = 0
    $pc7 = 0
    $time7 = 0
    $pc8 = 0
    $time8 = 0
    $mask = FileReadLine ($file)
    $m = StringSplit ($mask,":") 
    If $m[0] = 3 Then
    	$time1 = $m[1]
    	$pc1 = $m[2]
    	$keys1 = $m[3]
    EndIf
    $mask = FileReadLine ($file)
    $m = StringSplit ($mask,":") 
    If $m[0] = 3 Then
    	$time2 = $m[1]
    	$pc2 = $m[2]
    	$keys2 = $m[3]
    EndIf	
    $mask = FileReadLine ($file)
    $m = StringSplit ($mask,":") 
    If $m[0] = 3 Then
    	$time3 = $m[1]
    	$pc3 = $m[2]
    	$keys3 = $m[3]
    EndIf
    $mask = FileReadLine ($file)
    $m = StringSplit ($mask,":") 
    If $m[0] = 3 Then
    	$time4 = $m[1]
    	$pc4 = $m[2]
    	$keys4 = $m[3]
    EndIf	
    $mask = FileReadLine ($file)
    $m = StringSplit ($mask,":") 
    If $m[0] = 3 Then
    	$time5 = $m[1]
    	$pc5 = $m[2]
    	$keys5 = $m[3]
    EndIf
    $mask = FileReadLine ($file)
    $m = StringSplit ($mask,":") 
    If $m[0] = 3 Then
    	$time6 = $m[1]
    	$pc6 = $m[2]
    	$keys6 = $m[3]
    EndIf	
    $mask = FileReadLine ($file)
    $m = StringSplit ($mask,":") 
    If $m[0] = 3 Then
    	$time7 = $m[1]
    	$pc7 = $m[2]
    	$keys7 = $m[3]
    EndIf
    $mask = FileReadLine ($file)
    $m = StringSplit ($mask,":") 
    If $m[0] = 3 Then
    	$time8 = $m[1]
    	$pc8 = $m[2]
    	$keys8 = $m[3]
    EndIf	
    FileClose ($file)
    $skill1 = TimerInit()
    $skill2 = TimerInit()
    $skill3 = TimerInit()
    $skill4 = TimerInit()
    $skill5 = TimerInit()
    $skill6 = TimerInit()
    $skill7 = TimerInit()
    $skill8 = TimerInit()
    $Toggle = False
    
    HotKeySet ("0","Auto_Attack")
    While 1
    	Unstick ()
    	If $Toggle Then
    		Sleep (50)
    		Skill_Check ()
    	EndIf
    	Sleep (random (250,1000,1))
    WEnd
    
    Func Unstick ()
    	$dll = DllOpen("user32.dll")
    	$vkvalue = 16
    	;DllCall to unstick shift key as it gets stuck somehow.
    	DllCall($dll,"int","keybd_event","int",$vkvalue,"int",0,"long",2,"long",0) 
    	DllClose($dll)
    EndFunc
    
    Func Skill_Check ()
    		$percent = Random (1,100,1)
    		If Int (TimerDiff ($skill1)/1000) > $time1 and $percent <= $pc1 Then
    			ControlSend ($Wintitle,"","",$keys1)
    			$skill1 = TimerInit()
    		EndIf
    		If Int (TimerDiff ($skill2)/1000) > $time2 and $percent <= $pc2 Then
    			ControlSend ($Wintitle,"","",$keys2)
    			$skill2 = TimerInit()
    		EndIf
    		If Int (TimerDiff ($skill3)/1000) > $time3 and $percent <= $pc3 Then
    			ControlSend ($Wintitle,"","",$keys3)
    			$skill3 = TimerInit()
    		EndIf
    		If Int (TimerDiff ($skill4)/1000) > $time4 and $percent <= $pc4 Then
    			ControlSend ($Wintitle,"","",$keys4)
    			$skill4 = TimerInit()
    		EndIf
    		If Int (TimerDiff ($skill5)/1000) > $time5 and $percent <= $pc5 Then
    			ControlSend ($Wintitle,"","",$keys5)
    			$skill5 = TimerInit()
    		EndIf
    		If Int (TimerDiff ($skill6)/1000) > $time6 and $percent <= $pc6 Then
    			ControlSend ($Wintitle,"","",$keys6)
    			$skill6 = TimerInit()
    		EndIf
    		If Int (TimerDiff ($skill7)/1000) > $time7 and $percent <= $pc7 Then
    			ControlSend ($Wintitle,"","",$keys7)
    			$skill7 = TimerInit()
    		EndIf
    		If Int (TimerDiff ($skill8)/1000) > $time8 and $percent <= $pc8 Then
    			ControlSend ($Wintitle,"","",$keys8)
    			$skill8 = TimerInit()
    		EndIf
    EndFunc
    
    Func Auto_Attack ()
    	$Toggle = Not $Toggle
    EndFunc
    
    
    Func macro1 ()
    	ControlSend($Wintitle,"","",$mac1)
    	$Toggle = False
    EndFunc
    
    Func macro2 ()
    	ControlSend($Wintitle,"","",$mac2)
    	$Toggle = False
    EndFunc
    
    Func macro3 ()
    	ControlSend($Wintitle,"","",$mac3)
    	$Toggle = False
    EndFunc
    
    Func macro4 ()
    	ControlSend($Wintitle,"","",$mac4)
    	$Toggle = False
    EndFunc
    
    Func macro5 ()
    	ControlSend($Wintitle,"","",$mac5)
    	$Toggle = False
    EndFunc
    
    Func macro6 ()
    	ControlSend($Wintitle,"","",$mac6)
    	$Toggle = False
    EndFunc
    
    Func macro7 ()
    	ControlSend($Wintitle,"","",$mac7)
    	$Toggle = False
    EndFunc
    
    Func macro8 ()
    	ControlSend($Wintitle,"","",$mac8)
    	$Toggle = False
    EndFunc
    
    Func macro9 ()
    	ControlSend($Wintitle,"","",$mac9)
    	$Toggle = False
    EndFunc
    There are programs I have used to read pixels and compare images off the screen. But I have always found other methods the avoid using them since image reading can slow the process down and make mistakes. As to swapping accounts in Neverwinter, I saved the same user interface for all my accounts and characters. This also means that should I tell the mouse to click at X Y, the coordinate may not match to other users who have different resolutions and UI setups.

    Thank you for your comments, they are appreciated.

  3. #3
    visitor_is_scammer's Avatar Member
    Reputation
    1
    Join Date
    Aug 2015
    Posts
    1
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    it can work that way how you did it, will test it.

  4. #4
    32 bit's Avatar Member
    Reputation
    1
    Join Date
    Aug 2015
    Posts
    5
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    It has almost been a year since I last posted here on this subject. Here is my xdotool bash script for invoking up to 4 characters in 4 hours.

    Code:
    #!/bin/bash
    # This function is to wait after character selection and perform the invoke.
    sub_cycle () 
    {
    sleep 3
    # Click to select character
    xdotool click 1
    sleep 2
    # Enter the world and wait 30 sections on loading (just in case server lags)
    xdotool key Return
    sleep 30
    # Invoke and wait 10 seconds for the reward box.
    # If control + I is not working well enough, this can be change to a single key using the bind command in the game.
    xdotool key L_Control+i
    sleep 10
    # Clear reward box
    xdotool key Escape
    sleep 2
    # Note: F1 is bound using keybind to Character Selection Screen
    xdotool key F1
    sleep 10
    }
    # Main function to run through all 4 characters.
    main_cycle ()
    {
    # In Full Screen at my desktop resolution of 1366x768 these are the locations of my 4 character buttons.
    xdotool mousemove 420 100
    sub_cycle
    xdotool mousemove 420 180
    sub_cycle
    xdotool mousemove 420 260
    sub_cycle
    xdotool mousemove 420 340
    sub_cycle
    }
    # Program starts here
    # Look for Neverwinter window and sync up to xdotool
    a=0
    until ((a>0)) 
    do
      sleep 10
      a=$(wmctrl -l | grep -c Neverwinter)
    done
    x=$(xdotool search --name "Neverwinter")
    xdotool windowactivate --sync $x
    # Wait 20 seconds before we start.
    sleep 20
    # First Invoke
    main_cycle
    sleep 15m
    main_cycle
    sleep 30m
    main_cycle
    sleep 45m
    main_cycle
    sleep 60m
    main_cycle
    sleep 90m
    main_cycle
    # All done in a little over 4 hours.
    Notes
    This script is for users running Neverwinter under Linux OS. I know, we are a small group, but it will not work in Windows. Neverwinter must be started manually by the user and set to full screen. If the screen resolution is other than 1366x768, simply take a screen shot and use any image program to find the button coordinates. I used the cropping tool in Gwenview. Be sure you have both xdotool and wmctrl installed from your distribution.

    Setup
    • Once the game is running enter to each character and set the keybind F1 in the chat window; /bind F1 gotoCharacterSelect
    • Then press F1 to test it.
    • From the selection screen minimize the game, execute the bash script and return to the game.


    I get up for work in the morning run the game and execute the script. With 4 level 70 characters, I get 12,000 AD a day, which is better than nothing. Since the game is running in VM, it is impossible for the script to be detected. Cryptic seems to love the bots with as many are in their games.

Similar Threads

  1. [How-To] Start Bots on Linux Debian
    By Mr.Jexach in forum Pokemon GO Hacks|Cheats
    Replies: 1
    Last Post: 08-08-2016, 02:40 PM
  2. WoW Bot on gnu/linux
    By hardisk2002 in forum WoW Bots Questions & Requests
    Replies: 1
    Last Post: 06-18-2010, 08:06 PM
  3. tricks for botting on linux
    By pendra in forum WoW Memory Editing
    Replies: 9
    Last Post: 03-18-2010, 02:10 AM
  4. A bot project (linux users)
    By gammer55 in forum World of Warcraft Bots and Programs
    Replies: 14
    Last Post: 07-26-2008, 06:21 PM
All times are GMT -5. The time now is 04:45 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search