Jump to content

World Of Warcraft Development


malu05
 Share

Recommended Posts

I have an idea, but im not sure how to start. Dont even know if it would be posiable at this point

Did anyone ever play with the lazyscript? it was a built in language that allowed you to set up a pre chosen action based on what is happening with just one key press. Not a bot just made twitch play eaiser. On the 2.0 patch it was killed allong with a lot of other things.

I miss lazyscript. So my idea is to revive it of sorts. This will rely on 2 parts. First visual ques from the game (i'm going to use Rogue as a example). Someone parrys and now you get the chance to use riposet. Almost imposable without a visual que to do this every time some one parrys, so you end up spamming the ripo key will it fires off, hundred s of other things as well for all classes. So we need a AddOn for the game to display and color code all of theses special events that can happen.

I am thinking a small square, or border around the whole game that changes to a unique color on a specific event. Then using Pixel search to find that unique color in that spot and then preform an action when you press a HOTkey coded in autoit.

It would require the ability to add in UDF for what to do, where to click, or what button to push when this color is in this pixel. Might have to write macros in game as well to stream line some actions.

What do you thing? Possiable?

Link to comment
Share on other sites

  • Replies 470
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

  • 3 weeks later...

Anyone know what is required to access the local WoW files and pull collision data (trees, fences, etc), to create a path finding function? The path finding function would generate a list of way points that would avoid the collision object.

Edited by Jazkal
Link to comment
Share on other sites

Anyone know what is required to access the local WoW files and pull collision data (trees, fences, etc), to create a path finding function? The path finding function would generate a list of way points that would avoid the collision object.

Check the wowdev forums (don't have my computer's favorite so can't post it ATM).

There's an open source ADT reader in Java. Basically, when you got all the objects and coords, you perform a A* pathing using the map. It's a LOT of work, and prob not suitable for AutoIt, since you will need to implement a Priority Queue if you want to do a A* pathing (Arrays are wayyy too slow for that).

I suggest the use of C++ or C# for such a task. You must be very experienced to implement all that.

EDIT:: Link for it.

http://filebeam.com/e5b75ef19b6700a2de7a9f4643292e0d

EDIT2:: What you can do with it:

- Load / Edit DBC Files

- Load / CREATE / Edit ADT map files

- Move / Add objects and buildings

- Create new map using a greyscale image

- 3D visualization of map Files got started

- Load / Edit world files

- Load / Add files from MPQ archives

- Load / Edit Textures

- Hard render hand (ingame) spawned buildings / objects to adt maps

Blog for the program: http://taliis.blogspot.com/

GL, reply if you need help with something

Edited by galpha
Link to comment
Share on other sites

  • 3 weeks later...

i got a BIG problem...

i played around with all this memory reading stuff and everything worked fine...

until now!_MemoryRead () returns 0!(yes, i got the right addresses, and yes i used "SetPrivilege ("SeDebugPrivilege", 1)")

...Cheat Engine(nice little program to find add´s) still can read/change everything :D

pls need help with this!

brotwurst

Link to comment
Share on other sites

Cheat engine is detected by Warden as of 2.3.

Besides that, no real point in cheating in a mmo because it ruins it for the rest of the players. They are paying for the game just like you. Only a noobie tries to cheat in a game he has little experience in.

Edited by Squizzle

[acronym="I pee FREELY!"][spoiler]Hello.[/spoiler][/acronym]

Link to comment
Share on other sites

Cheat engine is detected by Warden as of 2.3.

Besides that, no real point in cheating in a mmo because it ruins it for the rest of the players. They are paying for the game just like you. Only a noobie tries to cheat in a game he has little experience in.

Cheat Engine is NOT detectet by warden...(i used it a lot the last few days)

why do you think i am a cheater?because of "CHEAT engine"?in that case please google it...

if you did not read the thread its not about cheating in WoW, its about memory reading! we dont make hacks/cheats like speedhack or something like that

and who do you think you are to call other people "noobs"?(btw you are from "N00bville"?that just says everything about you)

...someone here who wants to help me with my problem?

Edited by brotwurst
Link to comment
Share on other sites

I miss lazyscript. So my idea is to revive it of sorts. This will rely on 2 parts. First visual ques from the game (i'm going to use Rogue as a example). Someone parrys and now you get the chance to use riposet. Almost imposable without a visual que to do this every time some one parrys, so you end up spamming the ripo key will it fires off, hundred s of other things as well for all classes. So we need a AddOn for the game to display and color code all of theses special events that can happen.

I too miss Lazyscript. In fact, when I left, I specifically told Blizzard that lazyScript was the reason why I was leaving the game (it was simply a boring grind of a game without it).

The best way is to pull the conditions like lazyScript did directly from memory. Then you can have "on Condition do x" it was a great program, it's too bad they decided to remove it. There's certainly better ways of doing this than what you are suggesting with looking at pixels.

Link to comment
Share on other sites

@brotwurst: You obviously do not understand the term, sarcasm, which I used when I put in where I was from. To answer your question "who do you think you are to call other people "noobs"?" That comment was meant for anyone that was cheating in WoW but if your not cheating why would you take offense to it? Unless you are and are just ashamed of it.

Also, Blizzard is a big organization and to collect data on millions of people from Warden daily and have to view the logs of players who attract the suspicion of Warden, it takes a few days for them to either temp ban you or perm ban you. Either way you most likely will find out soon enough.

Edited by Squizzle

[acronym="I pee FREELY!"][spoiler]Hello.[/spoiler][/acronym]

Link to comment
Share on other sites

  • 4 weeks later...

Hello, i have make an update for Thermo Prime for 2.3.3, the coordinates are ok, but when i start the bot, the rotation check is not good and the bot don't go in the good direction.

If someone can fix this or tell me how to fix this (tuto) he make me verry happy :)

This is the complet package

http://www.megaupload.com/?d=85RPAPFX

This sis the modified code

[autoit]; ----------------------------------------------------------------------------

; ----------------------------------------------------------------------------

;

; Author:

; Malu05 aka. Mads Hagbart Lund <Batmazbaz@hotmail.com>

;

; Script Function:

; Thermo Prime - A Automated Movement Script for wow.

;

;

; ----------------------------------------------------------------------------

; ----------------------------------------------------------------------------

; About Project Thermo:

; A Memory Reading Automated Movement Script for World Of Warcraft.

; Developed to be fully indenpendet.

; ----------------------------------------------------------------------------

; ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

;Includes

#include <GUIConstants.au3>

#include <String.au3>

#include <Date.au3>

#include <array.au3>

#include <Math.au3>

#include <File.au3>

#include <_XMLDomWrapper.au3>

#include <NomadMemory.au3>

#include <File.au3>

;Hotkeys

HotkeySet("{ESC}","terminate")

HotkeySet("{F2}","RunTheBot")

;hotkeyset("{F3}","Pause") - Implant soon...

hotkeyset("{F4}","SaveDestination")

hotkeyset("{F5}","SaveDestination_Ghost")

;;================================================================================

;;Variable Definition;

;;================================================================================

;;App

$App_name = "Thermo Prime" ;Main Name of the application

$App_version = "0.12" ;Version Number of the Application

$App_Title = ($App_name & " v" & $App_version & " By; Malu05") ;Final Name of Process

;Files

Global $WowProcessName = "World of Warcraft" ;Name of the process (CASE SENSITIVE!!! FIX FOR YOUR VERSION)

Global $logname = "/Progress.log" ;Name of the logfile

;; Usual Config

dim $RatioConvertion = "100"

dim $slowdistance = "1"

dim $TimeBeforeJump = "4000" ;ms before starting to jump over a obstecle

dim $TimeBeforeReverse = "10000" ;ms before going back to previous waypoint

dim $walkkey = "{NUMLOCK}" ;Not used

;others

Global $wait, $running, $MouseDown, $taskset,$rot_perfect = 0 ;MouseDown is 1 when the mouse is down, and 0 when not

dim $cmdtabel = 0 ;When running the bot it will automaticly go to the first CASE in the CMDTable

Global $CurrentCheck = 1 ;Is 1 when its first time a check is being made

Dim $dubblecheckPos

dim $Overllrot, $OverllLocX, $OverllLocY, $OverllZone, $CurrentRot, $CurrentLocX, $CurrentLocY, $continentID, $lastX, $lastY, $debug, $toposX,$toposY,$result = 0

dim $dubblecheckPos, $ycheck, $slow, $move_x_big, $move_y_big, $rot_perfect, $rot_fast, $down, $XCurBigger, $YCurBigger, $jtdif, $jtstart = 0

dim $checkagain = 0

global $arraynumber = "0"

dim $array_x_number = "0"

global $pi = 4 * ATan(1)

dim $Xstart, $Ystart = 0

Global $pasedborder = 0

dim $jumptimerwalk, $deathNY = 0

$alive = 1

;for XML Process

Global $xmlFile ;Name of the XML File open

dim $test_pause = 0

$ATTRIBS = _ArrayCreate ("Continent","Zone","Nr","posX","posY","Comment")

$CHILDATTRIBS = _ArrayCreate ("Continent","Zone","Nr","posX","posY","Comment")

Global $xmlFile

Global $count = 0

Global $sNxPath, $fHwnd

Global $ARRAY[1][1]

Global $ARRAYX

Global $ARRAYY

Local $additional = 1

Local $numb = 0001

dim $corpselocX,$releasecorpse, $corpselocY = 0

;for XML Process __ for save waypoint

Local $szXPath1,$szXPath2, $aNodeName1,$aNodeName2, $find, $oXSD,$iNodeCount,$aAttrName1[1],$aAttrVal1[1],$aAttrName2[1],$aAttrVal2[1],$ret_val,$X

Opt("WinTitleMatchMode", 4)

Global $ProcessID = WinGetProcess($WowProcessName,"")

SetPrivilege("SeDebugPrivilege", 1)

If $ProcessID = -1 Then

MsgBox(4096, "Thermo Prime - ERROR", "Failed to detect World of Warcraft running.")

Exit

EndIf

_FileWriteLog(@ScriptDir & $logname,":::Start Of Session:::")

;;================================================================================

;;GUI;

;;================================================================================

;Window

GUICreate($App_Title, 200, 250)

GUISetState (@SW_SHOW)

;Buttons

$Button_SelectProfile = GUICtrlCreateButton ("Select Profile", 100, 10, 100)

$Button_NewProfile = GUICtrlCreateButton ("New Profile", 100, 40, 100)

;Labels

$FinalCharname = GUICtrlCreateLabel("Charname", 10,10,70,20,($SS_SUNKEN ))

$Finallocx = GUICtrlCreateLabel("Position X", 10,40,70,20,($SS_SUNKEN ))

$Finallocy = GUICtrlCreateLabel("Position Y", 10,70,70,20,($SS_SUNKEN ))

$Finalrot = GUICtrlCreateLabel("Rotation", 10,100,70,20,($SS_SUNKEN ))

$Finalrandom = GUICtrlCreateLabel("ZoneID", 10,130,70,20,($SS_SUNKEN ))

;Labels_debug

$DebugID = GUICtrlCreateLabel("StatusID", 5,210,120,20,($SS_SUNKEN ))

$RotationID = GUICtrlCreateLabel("RotationID", 5,190,120,20,($SS_SUNKEN ))

;Checkbox

$debugcheck = GUICtrlCreateCheckbox ("Debug Mode", 5, 230, 160, 20)

$combatmode = GUICtrlCreateCheckbox ("Combat Mode", 100, 230, 160, 20)

;WinSetOnTop($App_Title, "", 1) - Implant soon...

SmartBehavior()

;;================================================================================

;;THERMO START!

;;================================================================================

Func SmartBehavior()

While $wait = 0

;Check GUI for userinput

$msg = GUIGetMsg()

Select

Case $msg = $GUI_EVENT_CLOSE

Exit 0

Case $msg = $Button_SelectProfile

SelectOpenXML()

Case $msg = $Button_NewProfile

NewProfile()

EndSelect

;Check if wow is running

If WinActive("World of Warcraft") Then

If $xmlFile = "" Then

sleep(10)

msgbox(0,"Thermo Prime - ERROR","You have not selected a XML File! Please press the [select Profile] button and select a profile before running")

WinWaitActive($App_Title)

Else

_FileWriteLog(@ScriptDir & $logname,"World Of Warcraft process opned")

sleep(20)

send("{Enter}")

sleep(11)

Clipput("/script DEFAULT_CHAT_FRAME:AddMessage("""& $app_name & " v" & $App_version & " is running!! "",0.0,0.0,1.0); ")

sleep(11)

Send("^v")

sleep(11)

send("{Enter}")

$wait = 1

EndIf

EndIf

WEnd

;Start the bot-----------------

While 1

Cmdtable()

WEnd

EndFunc ;==>SmartBehavior

;;================================================================================

;;Command Table;

;;================================================================================

func Cmdtable() ;;Command Table for functions, this table can be used for configuring the steps of the bots behaviour

$debug = GUICtrlRead($debugcheck)

Switch $cmdtabel

Case 0

;ControlSetText($App_Title, "", $DebugID, "0-GetCurrentData")

GetCurrentData()

Case 1

ControlSetText($App_Title, "", $DebugID, "1-EventCalculation" & $array_x_number) ;these are for debuggin - Remove soon...

EventCalculation()

Case 2

ControlSetText($App_Title, "", $DebugID, "2-CheckRotation")

_FileWriteLog(@ScriptDir & $logname,"checkRotation" & $taskset)

CheckRotation()

Case 3

ControlSetText($App_Title, "", $DebugID, "3-GoToPos")

_FileWriteLog(@ScriptDir & $logname,"Gotopos")

GoToPos()

Case 4

ControlSetText($App_Title, "", $DebugID, "4-Dubblecheck")

_FileWriteLog(@ScriptDir & $logname,"dualchecl")

Dubblecheck()

Case 5

ControlSetText($App_Title, "", $DebugID, "5-runbot")

_FileWriteLog(@ScriptDir & $logname,"runbot")

runbot()

EndSwitch

Return

Endfunc ;==>Cmdtable

;;================================================================================

;;GetCurrentData;

;;================================================================================

Func GetCurrentData() ;Read data from memory

if $CurrentCheck = 1 Then

MemoryLoop()

EndIf

if $dubblecheckPos = 1 Then

$cmdtabel = 4;Next step = 4 Dubblecheck()

Return

Else

$cmdtabel = 1 ;Next step = EvenCalculation()

Return

EndIf

EndFunc ;==>GetCurrentData

;;================================================================================

;;EvenCalculation;

;;================================================================================

Func EventCalculation();With the info from GetCurrentData calculate what to do

if $deathNY = 0 Then

if $alive = 1 Then

$alive = 0

$corpselocX = $CurrentLocX

$corpselocY = $CurrentLocY

sleep(20)

send("{Enter}")

sleep(11)

Clipput("/script RepopMe()")

sleep(11)

Send("^v")

sleep(11)

send("{Enter}")

EndIf

EndIf

if $running = "1" Then

if $CurrentLocX = $toposX Then

if $CurrentLocY = $toposY Then

$running = "0"

$checkagain = 0

$dubblecheckPos = 0

$cmdtable = 5

$rot_perfect = 0

Return ;Next step = GetCurrentData()

EndIf

EndIf

;$cmdtable = 5

;$rot_perfect = 0

;Return ;Next step = GetCurrentData()

EndIf

if $pasedborder = 1 Then

$running = "0"

$checkagain = 0

$dubblecheckPos = 0

$cmdtable = 5

$rot_perfect = 0

Return ;Next step = GetCurrentData()

EndIf

if $taskset = 1 Then

_FileWriteLog(@ScriptDir & $logname,"Data recived from game; Rotation=" & $CurrentRot & ". PositionX=" & $CurrentLocX & ". PositionY=" & $CurrentLocY & "." )

$cmdtabel = 2 ;Next step = CheckRotation()

Return

EndIf

if $rot_perfect = 1 Then

$cmdtabel = 3 ;Next step = GoToPos()

Return

EndIf

$cmdtabel = 0 ;Next step = GetCurrentData()

return

EndFunc ;==>EventCalculation

;;================================================================================

;;CheckRotation

;;================================================================================

Func CheckRotation()

if $debug = 1 then

send("{Enter}")

sleep(200)

Clipput("Current = " & $CurrentRot & " result= " & $result)

Send("^v")

sleep(200)

send("{Enter}")

EndIf

$jtstart = "0"

$jumptimerwalk = "0"

$lastX = "0"

$lastY = "0"

$windowsize = WinGetPos($WowProcessName)

MouseMove((($windowsize[2]/2)+$windowsize[0]),(($windowsize[3]/2)+$windowsize[1]), 0)

while $taskset = 1

MemoryLoop()

Rotationfix()

$Rot_Smallest = _Min($CurrentRot, $result)

$Rot_Biggest = _Max($CurrentRot, $result)

if $CurrentRot = $Rot_Biggest Then

If ($CurrentRot - $result) < 190 Then

$down = 1

if ($CurrentRot - $result) < 30 Then

$rot_fast = 0

if ($CurrentRot - $result) < 9 Then

$rot_fast = 2

EndIf

else

$rot_fast = 1

EndIf

Else

$down = 0

if (($result + 360) - $CurrentRot) < 50 Then

$rot_fast = 0

if (($result + 360) - $CurrentRot) < 9 Then

$rot_fast = 2

EndIf

else

$rot_fast = 1

EndIf

EndIf

Else

If ($result - $CurrentRot) < 190 Then

$down = 0

if ($result - $CurrentRot) < 50 Then

$rot_fast = 0

if ($result - $CurrentRot) < 9 Then

$rot_fast = 2

EndIf

else

$rot_fast = 1

EndIf

else

$down = 1

if (($CurrentRot + 360) - $result) < 50 Then

$rot_fast = 0

if (($CurrentRot + 360) - $result) < 9 Then

$rot_fast = 2

EndIf

else

$rot_fast = 1

EndIf

EndIf

EndIf

if $CurrentLocX = $toposX Then

if $CurrentLocY = $toposY Then

$cmdtabel = 5 ;Next step = GetCurrentData()

$rot_perfect = 1

$taskset = 0

Return ;Next step = GetCurrentData()

EndIf

EndIf

MouseDown("right")

if $rot_fast = 1 Then

if $down = 0 Then

;MouseDown("right")

_MouseMovePlus(-20,0)

Sleep(10)

Else

;MouseDown("right")

_MouseMovePlus(20,0)

Sleep(10)

EndIf

EndIf

if $rot_fast = 0 Then

if $down = 0 Then

MouseDown("right")

_MouseMovePlus(-10,0)

Sleep(10)

;sleep(200)

Else

;MouseDown("right")

_MouseMovePlus(10,0)

Sleep(10)

EndIf

EndIf

if $rot_fast = 2 Then

if $down = 0 Then

;MouseDown("right")

_MouseMovePlus(-2,0)

Sleep(10)

;sleep(200)

Else

;MouseDown("right")

_MouseMovePlus(2,0)

Sleep(10)

EndIf

EndIf

;Update Rotation Data

MemoryLoop()

Rotationfix()

if floor($CurrentRot) = floor($result) Then

MouseUp("right")

$taskset = 0

sleep(200)

EndIf

wend

_FileWriteLog(@ScriptDir & $logname,"Rotation Complete; CurrentRotation=" & $CurrentRot & ". FinalRotation=" & $result & "." )

MouseUp("right")

$cmdtabel = 0 ;Next step = GetCurrentData()

$rot_perfect = 1

$taskset = 0

return

EndFunc ;==>CheckRotation

;;================================================================================

;;GoToPos

;;================================================================================

Func GoToPos()

; [Find The Coordinate Place]

If $toposX <= $Xstart Then

$XCurBigger = 1

Else

$XCurBigger = 0

EndIf

If $toposY <= $Ystart Then

$YCurBigger = 1

Else

$YCurBigger = 0

EndIf

$distance = _max(($CurrentLocX+$CurrentLocy),($toposX+$toposY)) - _min(($CurrentLocX+$CurrentLocy),($toposX+$toposY))

; [/Find The Coordinate Place]

send ("{w down}")

while $rot_perfect = 1

;For Jump Timer

$lastX = $CurrentLocX

$lastY = $CurrentLocY

; [Gather Position Data From WoW]

MemoryLoop()

;[Tjek Data]

;Jump Timer (if the player stays too long at the same location it will start jumping, and short after return to previous waypoint.)

If $lastX = $CurrentLocX Then

If $lastY = $CurrentLocY Then

if $jtstart = 0 Then

$jumptimerwalk = TimerInit()

$jtstart = 1

EndIf

$jtdif = TimerDiff($jumptimerwalk)

ControlSetText($App_Title, "", $RotationID, "TimerLoc:" & $lastX &","&$lastY & " t:" & floor($jtdif) )

If $jtdif > $TimeBeforeReverse Then ;For Going Back One Step in the Waypoint Section

if $deathNY = 0 Then

if $alive = 1 Then

$alive = 0

$corpselocX = $CurrentLocX

$corpselocY = $CurrentLocY

sleep(20)

send("{Enter}")

sleep(11)

Clipput("/script RepopMe()")

sleep(11)

Send("^v")

sleep(11)

send("{Enter}")

EndIf

EndIf

_FileWriteLog(@ScriptDir & $logname,"Could not reach the desired destination; waypoint: " & $array_x_number & ", retrying from last waypoint. RP=" & $jtdif)

$array_x_number = $array_x_number - 1

$cmdtabel = 5 ;Next step = Save_test()

$jtstart = 0

;send ("{w down}")

send ("{w}")

Return

EndIf

if $jtdif > $TimeBeforeJump Then ;For Basic Jump after X Secounds

_FileWriteLog(@ScriptDir & $logname,"Suspected stuck trying to reach; waypoint: " & $array_x_number & ", attempting jump procedure. RP=" & $jtdif)

send ("{w up}")

sleep(20)

send("{space}")

sleep(100)

send ("{w down}")

EndIf

Else

$jumptimerwalk = 0

$jtstart = 0

$jtdif = 0

EndIf

Else

$jumptimerwalk = 0

$jtstart = 0

$jtdif = 0

EndIf

;[Tjek Data]

if _max(($CurrentLocX+$CurrentLocy),($toposX+$toposY)) - _min(($CurrentLocX+$CurrentLocy),($toposX+$toposY)) > $distance Then

$cmdtabel = 0 ;Next step = Save_test()

send ("{w}")

$dubblecheckPos = 1

$cmdtable = 0

$rot_perfect = 0

$pasedborder = 1

Return

EndIf

if $XCurBigger = 0 Then

If $CurrentLocX >= $toposX Then

;send ("{w down}")

$dubblecheckPos = 1

$cmdtable = 0

$rot_perfect = 0

$pasedborder = 1

Return ;Next step = GetCurrentData()

EndIf

EndIf

If $XCurBigger = 1 Then

if $CurrentLocX <= $toposX Then

if $YCurBigger = 1 Then

if $CurrentLocY <= $toposY Then

;send ("{w down}")

$dubblecheckPos = 1

$cmdtable = 0

$rot_perfect = 0

$pasedborder = 1

Return ;Next step = GetCurrentData()

EndIf

EndIf

If $YCurBigger = 0 Then

if $CurrentLocY >= $toposY Then

;send ("{w down}")

$dubblecheckPos = 1

$cmdtable = 0

$rot_perfect = 0

$pasedborder = 1

Return ;Next step = GetCurrentData()

EndIf

EndIf

EndIf

EndIf

If $YCurBigger = 0 Then

if $CurrentLocY >= $toposY Then

;send ("{w down}")

$dubblecheckPos = 1

$cmdtable = 0

$rot_perfect = 0

$pasedborder = 1

Return ;Next step = GetCurrentData()

EndIf

EndIf

if $YCurBigger = 1 Then

if $CurrentLocY <= $toposY Then

if $XCurBigger = 0 Then

If $CurrentLocX >= $toposX Then

;send ("{w down}")

$dubblecheckPos = 1

$cmdtable = 0

$rot_perfect = 0

$pasedborder = 1

Return ;Next step = GetCurrentData()

EndIf

EndIf

If $XCurBigger = 1 Then

if $CurrentLocX <= $toposX Then

;send ("{w down}")

$dubblecheckPos = 1

$cmdtable = 0

$rot_perfect = 0

$pasedborder = 1

Return ;Next step = GetCurrentData()

EndIf

EndIf

EndIf

EndIf

ControlSetText($App_Title, "", $DebugID, "3-GoToPos:" & $toposX &","&$toposy)

WEnd

if $debug = 1 then

send("{Enter}")

sleep(200)

Clipput("Error")

Send("^v")

sleep(200)

send("{Enter}")

EndIf

;send ("{w up}")

$cmdtabel = 0 ;Next step = GetCurrentData()

return

EndFunc ;==>GoToPos

;;================================================================================

;;Dubblecheck()

;;================================================================================

Func Dubblecheck()

if $CurrentLocX <= ($toposX+1) And $CurrentLocX >= ($toposX-1) Then

if $CurrentLocY <= ($toposY+1) And $CurrentLocY >= ($toposY-1) Then

$dubblecheckPos = 0

$taskset = 0

$rot_perfect = 0

$cmdtabel = 0

;send("{

Link to comment
Share on other sites

  • 2 weeks later...

Well... Im still around.

I think its funny how this triggered a whole era of wow autoIt development.

And i am happy to see so many people kind'a forcing themselves to learn autoIt to do it and later take advantage of their knowledge for other projects or problems that AutoIt's automation can solve. It's good to hear from all of you. I however find it a bit sad that some of you have just pasted my answers right on to hacking sites etc. But im not the one to judge.

A few days ago i friend of mine came n a visit and browsed through my scrap codes i made during this whole thread here, and i thought it would be fun to update the code add comments and release it. Last time some jerk leaked my code to a hacking site the code was catched by warden just a few days later so i see no harm in releasing a bunch of code that might inspire some of you people.

I will still highly recommend people to keep topics inside this thread to not spam the forums and avoid starting debate about abusive stuff (ye know what im talking about ^^)

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

Well...

could please explain how to make the char turn correctly??

i have looked at your script but i didnt quite understand all of it.

this is the function i made to make the char turn towards the next waypoint.

and the coords stored in waypoints.txt looks like this "x, y, z, map"

problery gonna make it another format later but i like to keep things simple.

Func _Turn()
    Local $Cur_Coords = _GetCoords() ;Gets the chars current coords
    Local $Next_Coords = StringSplit(FileReadLine(@ScriptDir & "\waypoints.txt",$Cur_Waypoint), ",") ;split x, y, z, map
    
    ;There is a problem here, it always seem to get somewhat correct Deg. but sometimes its off by 180 deg.
    ;so it walks away the waypoint insted of towards.
    Local $Next_Rot = Floor(ATan(($Cur_Coords[1]-$Next_Coords[2])/($Cur_Coords[0]-$Next_Coords[1]))*$radToDeg)
    
    ;tweek the deg. so be are 98% sure we can use it.
    If $Next_Rot > 360 then $Next_Rot -= 360
    If $Next_Rot < 0 Then $Next_Rot = 360-($Next_Rot*-1)
    
    GUICtrlSetData($Input6, $Next_Coords[1])
    GUICtrlSetData($Input7, $Next_Coords[2])
    GUICtrlSetData($Input9, $Next_Coords[3])
    GUICtrlSetData($Input10, $Next_Rot)
    
    MouseDown("Right")
    
    Do
        $Cur_Rot = _GetRotation()
        
        ;Need better 'mouse movment' for faster and more presis rotating
        If $Cur_Rot > $Next_Rot Then
            _MouseMovePlus(2, 0)
        Else
            
            _MouseMovePlus(-2, 0)
        EndIf
        
        GUICtrlSetData($Input5, $Cur_Rot)
    Until $Cur_Rot = $Next_Rot
    
    MouseUp("Right")
    
    Return $Next_Rot
EndFunc

[font="Impact"]Never fear, I is here.[/font]

Link to comment
Share on other sites

could please explain how to make the char turn correctly??

...

The reason why i use the big bunch of code for rotation is to make it alot faster.

my code splits the current contra final rotation into serval stages, each stage with it's own speed.

So if the rot current is still far from rot final it will go 20 pixels at the time.

Lesser 10..

and if it is close it will only move 2 pixels at a time

So if the current is 360 and the final is 180 it will go alot faster than if i only used 2 pixels all the way.

(hope you understand)

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

The reason why i use the big bunch of code for rotation is to make it alot faster.

my code splits the current contra final rotation into serval stages, each stage with it's own speed.

So if the rot current is still far from rot final it will go 20 pixels at the time.

Lesser 10..

and if it is close it will only move 2 pixels at a time

So if the current is 360 and the final is 180 it will go alot faster than if i only used 2 pixels all the way.

(hope you understand)

the problem i have with my script is the calculation of the rotation my char has to do to reach the next waypoint.

i need to know how the get the number deg. my char needs to be at to be able to walk from x1,y1 too x2,y2.

Trigonometri is not my strong side :s

[font="Impact"]Never fear, I is here.[/font]

Link to comment
Share on other sites

the problem i have with my script is the calculation of the rotation my char has to do to reach the next waypoint.

i need to know how the get the number deg. my char needs to be at to be able to walk from x1,y1 too x2,y2.

Trigonometri is not my strong side :s

Local $Next_Rot = Floor(ATan(($Cur_Coords[1]-$Next_Coords[2])/($Cur_Coords[0]-$Next_Coords[1]))*$radToDeg)

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...