Register for your free account! | Forgot your password?

You last visited: Today at 04:57

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



WoW_Autofish

Discussion on WoW_Autofish within the WoW Bots forum part of the World of Warcraft category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Sep 2006
Posts: 2,704
Received Thanks: 249
WoW_Autofish

Code:
#include "WoW.h"

#include "WoW_AutoFish.h"

int (*GetNumLootItems)() = ( int (*)() )0x004CCFD0;
void (__stdcall *LootItem)(int) = ( void (__stdcall*) (int Index) )0x005D1280;

void CastSpellByID( int spellid )
{
	__asm
	{
		PUSH 0
		PUSH 0
		PUSH 0
		PUSH spellid
		MOV EAX, 0x006DBEF0
		CALL EAX
		ADD ESP, 10
	}
}

void CAutoFish::Initialize()
{
	m_State = FISH_DONELOOTING;
	m_bEnabled = false;
	gWoW.GetRenderer()->AddRenderCallback( CAutoFish::RenderCallback );

	m_hThreadHandle = CreateThread( NULL, NULL, (LPTHREAD_START_ROUTINE)FishLoop, NULL, NULL, NULL );
}

void FishLoop()
{
	static bool bDoOnce = true;

	while(1)
	{
		if ( bDoOnce )
		{
			gWoW.GetOffset( "s_curMgr" );
			_asm MOV ECX, DWORD PTR FS:[0x2C] // Hackish way to store the objMgr into our TLS so WoW's functions
			_asm MOV ESI, DWORD PTR DS:[ECX]  // Can use it
			_asm MOV DWORD PTR SS:[ESI+8], EAX
			bDoOnce = false;
		}

		if ( gAutoFish.IsEnabled() )
		{

			CGameObject* pGameObj = (CGameObject*)gWoW.GetObjectFromName( "Fishing Bobber" );

			if ( pGameObj == NULL && gAutoFish.GetState() == FISH_DONELOOTING ) // No bobber, lets cast one then!
			{
				gAutoFish.SetState(FISH_CASTING);

				// Cast Line

				CastSpellByID(7620);
			} else if ( pGameObj && gAutoFish.GetState() != FISH_LOOTING )
			{
				CFishingBobber* pBobber = (CFishingBobber*)pGameObj->pGameObjectInfo;

				if ( pBobber->CanUseItem() && pBobber->GotBite() ) // We have a bobber. Can we use this? Does it have a bite?
				{
					gAutoFish.SetState(FISH_LOOTING);

					gWoW.GetConsole().AddLine( "Got a bite!", 255, 255, 255, 255 );

					// Use Bobber
					pBobber->UseItem();

					Sleep(1000);

					int NumLootItems = GetNumLootItems();

					if ( NumLootItems == 0 )
					{
						// Fish got away, bastard!
						// Add to stats
						gAutoFish.m_Stats.iFishGotAway++;
					} else
					{
						for( int i = 0; i < NumLootItems; i++ )
						{
							gWoW.GetConsole().AddLine( "Looting slot", 255, 255, 255, 255 );
							LootItem( i );
							gAutoFish.m_Stats.iFishCaught++; // This needs to be += The amount of fish in that loot slot, but ++ will suffice for now
						}

						gWoW.GetConsole().AddLine( "Finished Looting", 255, 255, 255, 255 );
					}

					gAutoFish.SetState(FISH_DONELOOTING);
				}
			}
		}

		Sleep(1);
	}
	ExitThread( 0 );
}

void CAutoFish::Render( IDirect3DDevice9* pDevice )
{
	// TODO: Make sure the bobber belongs to use, maybe check if its usable?

	if ( GetAsyncKeyState( VK_MBUTTON ) &1 )
		m_bEnabled = !m_bEnabled;

	CRenderer* pRenderer = gWoW.GetRenderer();

	pRenderer->DrawText( 150, 150, 255, 255, 255, 255, "Fish Stats:" );
	pRenderer->DrawText( 150, 160, 255, 255, 255, 255, "Caught  : %i", m_Stats.iFishCaught );
	pRenderer->DrawText( 150, 170, 255, 255, 255, 255, "Got Away: %i", m_Stats.iFishGotAway );
}

void CAutoFish::RenderCallback( IDirect3DDevice9* pDevice )
{
	gAutoFish.Render( pDevice );
}
Code:
#pragma once

void FishLoop();

enum eFishStates
{
	FISH_CASTING,
	FISH_WAITINGFORBITE,
	FISH_LOOTING,
	FISH_DONELOOTING
};

struct fishStats
{
	int iFishCaught;
	int iFishGotAway;
};

class CAutoFish
{
public:
	void Initialize();
	void Render( IDirect3DDevice9* pDevice );

	bool IsEnabled() { return m_bEnabled; }

	eFishStates GetState() { return m_State; }
	void SetState( eFishStates State ) { m_State = State; }

	static void RenderCallback( IDirect3DDevice9* pDevice );

	fishStats	m_Stats;

private:
	eFishStates m_State;
	bool		m_bEnabled;
	HANDLE		m_hThreadHandle;
};

extern CAutoFish	gAutoFish;
by kynox


Code:
[14:52:35]:  Logging started at 2008-02-22
[14:52:35]:  0x006E03D0 -> CastSpellById
[14:52:35]:  0x004CFD90 -> LootItem
[14:52:35]:  0x00C60F7C -> LootPtr

int GetNumLootableItems()
{
	DWORD dwPointer = FindPattern->dwList[ "LootPtr" ].Get();
	DWORD dwEax = 0x0, dwEcx = 0x2, dwEdx = dwPointer + 0x20, dwEsi = 0x4;

	while( dwEsi )
	{
		if( *(DWORD*)( dwEdx - 0x20 ) > 0x0 )//possible lootable item list ? ( entry size: 0x20 )
			dwEax = dwEcx - 0x1;
		if( *(DWORD*)( dwEdx ) > 0 )
			dwEax = dwEcx;
		if( *(DWORD*)( dwEdx + 0x20 ) > 0x0 )
			dwEax = dwEcx + 0x1;
		if( *(DWORD*)( dwEdx + 0x40 ) > 0x0 )
			dwEax = dwEcx + 0x2;

		dwEcx += 0x4;
		dwEdx += 0x80;
		dwEsi--;
	}

	return dwEax;
by bobbysing

so nun meine frage, wer kann damit etwas hier anfangen . Ist das der Code für nen fishbot oder was ist das ? ( wenn ja wie nutz ich den dann )
Kenn mich da leider noch nicht so aus...
Reckoning is offline  
Old 04/12/2008, 23:36   #2
 
elite*gold: 0
Join Date: Nov 2004
Posts: 791
Received Thanks: 23
naja hast es schonmal versucht mit autoit koennt mir vostellen das es sowas ist
poison0815 is offline  
Old 04/13/2008, 00:01   #3
 
elite*gold: 0
Join Date: Sep 2006
Posts: 2,704
Received Thanks: 249
mhm is auf dem pc noch ned installiert
Reckoning is offline  
Reply




All times are GMT +2. The time now is 04:57.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.