All pastes #285934 Raw Edit

Stuff

public c v1 · immutable
#285934 ·published 2006-12-20 04:53 UTC
rendered paste body
#loadLibrary 'ZcSysLib'#loadLibrary 'ZcWinLib'#loadLibrary 'ZcMathLb'//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// GoatCheez's Automatic Upgrader Script V 0.1 //////////////         Tested on USKO - Xigenon            //////////////   Assumes you have enough scrolls and that  ////////////// the scroll stack is in the lower right slot ////////////// of the inventory. Inventory must be empty   ////////////// except for the stack of scrolls.            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////set these next two. this script upgrades items from the //armor merchant. ItemPage is the page the item is on, and //ItemToUpgrade is the icon of the item being upgraded.const ItemToUpgrade = "ICON_Armor_Mage_Level2_Pads";const ItemPage = 2;const usingItemLocation = true;const itemLocationX = 0;const itemLocationY = 2;const MouseClickDelaySpeed1 = 375;const MouseClickDelaySpeed2 = 550;const GeneralDelaySpeed1 = 1000;const DefaultKeyClickTime = 350;const DefaultMouseClickTime = 350;//use this to decide between weapon and armor merchantconst usingWeaponMerchant = false; const AnvilWatchStartX = 675;const AnvilWatchStartY = 90;const AnvilInventoryStartX = 668;const AnvilInventoryStartY = 356;const AnvilInventoryWidth = 342;const AnvilInventoryHeight = 202;const SellerInventoryStartX = 685;const SellerInventoryStartY = 356;const SellerInventoryWidth = 330;const SellerInventoryHeight = 188;const InventoryItemCountX = 7;const InventoryItemCountY = 4;const SellerPageStartX = 698; // to 1010 == 312 widthconst SellerPageStartY = 62; // to 268 == 206 heightconst SellerPageWidth = 312;const SellerPageHeight = 206;const SellerPageItemCountX = 6;const SellerPageItemCountY = 4;const InnInventoryStartX = 682;const InnInventoryStartY = 354;const InnInventoryWidth = 331;const InnInventoryHeight = 193;const InnDropSpotX = 725;const InnDropSpotY = 90;const vkKey_Forward = 87;const vkKey_Back = 83;const vkKey_TurnLeft = 65;const vkKey_TurnRight = 68;const vkKey_SelectNearestNPC = 66;const vkKey_PointOfViewChange = 120;const vkKey_RunWalk = 84;const MATH_PI = 3.14159265;const MATH_TWOPI = 6.2831853;var PlayerIsWalking = false;MyMouseLeftClick(var clickDelay){	MouseLeftDown();	Delay(clickDelay);	MouseLeftUp();}MyMouseRightClick(var clickDelay){	MouseRightDown();	Delay(clickDelay);	MouseRightUp();}MouseClick(var clickDelay){	MouseLeftDown();	Delay(clickDelay);	MouseLeftUp();}KeyClick(var vkKey, var holdDelay){	KeyDown(vkKey);	Delay(holdDelay);	KeyUp(vkKey);}ToggleFirstToThird(){	KeyClick(vkKey_PointOfViewChange,DefaultKeyClickTime);	Delay(DefaultKeyClickTime*2);	KeyClick(vkKey_PointOfViewChange,DefaultKeyClickTime);}GetAngleFromDiffSet(var xDiff, var yDiff){	var theNewAngle = atan(abs(xDiff)/abs(yDiff));	if (theNewAngle < 0)	{		theNewAngle = abs(theNewAngle);	}		if (theNewAngle > MATH_TWOPI)		theNewAngle -= MATH_TWOPI;	if (theNewAngle > MATH_PI)		theNewAngle -= MATH_PI;	if (theNewAngle > (MATH_PI / 2))		theNewAngle -= (MATH_PI / 2);		if ((xDiff < 0) && (yDiff < 0))		return theNewAngle;	if ((xDiff < 0) && (yDiff > 0))		return MATH_PI + (-1 * theNewAngle);	if ((xDiff > 0) && (yDiff > 0))		return MATH_PI + theNewAngle;	if ((xDiff > 0) && (yDiff < 0))		return MATH_TWOPI + (-1 * theNewAngle);	return 0.0;}MovePlayerTo(var xPos, var yPos){	var currentX = GetPlayerLocationX();	var currentY = GetPlayerLocationY();	var diffX = currentX - xPos;	var diffY = currentY - yPos;		var theNewAngle = GetAngleFromDiffSet(diffX,diffY);	var angleDiff = GetPlayerLocationDirection() - theNewAngle;		while (abs(angleDiff) > (MATH_TWOPI / 32))	{		angleDiff = GetPlayerLocationDirection() - theNewAngle;		if (angleDiff < 0)		{			if (abs(angleDiff) < MATH_PI)			{				KeyDown(vkKey_TurnRight);				KeyUp(vkKey_TurnLeft);			} else {				KeyDown(vkKey_TurnLeft);				KeyUp(vkKey_TurnRight);			}		}		else		{			if (abs(angleDiff) < MATH_PI)			{				KeyDown(vkKey_TurnLeft);				KeyUp(vkKey_TurnRight);			} else {				KeyDown(vkKey_TurnRight);				KeyUp(vkKey_TurnLeft);			}		}				Delay(RandRange(43,92));		angleDiff = GetPlayerLocationDirection() - theNewAngle;	}	KeyUp(vkKey_TurnRight);	KeyUp(vkKey_TurnLeft);		KeyDown(vkKey_Forward);	while((abs(xPos - GetPlayerLocationX()) > 0.25) || (abs(yPos - GetPlayerLocationY()) > 0.25))	{		if ((!PlayerIsWalking) && (sqrt(((xPos - GetPlayerLocationX()) * (xPos - GetPlayerLocationX())) + ((yPos - GetPlayerLocationY()) * (yPos - GetPlayerLocationY()))) < 6.0))		{			KeyUp(vkKey_TurnRight);			KeyUp(vkKey_TurnLeft);			KeyClick(vkKey_RunWalk,DefaultKeyClickTime);			PlayerIsWalking = true;		}		theNewAngle = GetAngleFromDiffSet((GetPlayerLocationX() - xPos),(GetPlayerLocationY() - yPos));			angleDiff = GetPlayerLocationDirection() - theNewAngle;						if (angleDiff < 0)		{			if (abs(angleDiff) < MATH_PI)			{				KeyDown(vkKey_TurnRight);				KeyUp(vkKey_TurnLeft);			} else {				KeyDown(vkKey_TurnLeft);				KeyUp(vkKey_TurnRight);			}		}		else		{			if (abs(angleDiff) < MATH_PI)			{				KeyDown(vkKey_TurnLeft);				KeyUp(vkKey_TurnRight);			} else {				KeyDown(vkKey_TurnRight);				KeyUp(vkKey_TurnLeft);			}		}			Delay(RandRange(5,12));	}	KeyUp(vkKey_Forward);	KeyUp(vkKey_TurnRight);	KeyUp(vkKey_TurnLeft);	if (PlayerIsWalking)	{		KeyClick(vkKey_RunWalk,DefaultKeyClickTime);		PlayerIsWalking = false;	}}OpenAnvilForUpgrading(){	KeyDown(vkKey_SelectNearestNPC);  //42 is the B button on the keyboard	Delay(MouseClickDelaySpeed1);	KeyUp(vkKey_SelectNearestNPC);	//KeyClick(vkKey_Forward,333);	MouseMoveTo(1024 / 2, 768 / 2);	Delay(MouseClickDelaySpeed2);	MyMouseRightClick(MouseClickDelaySpeed1);	Delay(MouseClickDelaySpeed1 * 3);	MouseMoveTo(490,390);	Delay(MouseClickDelaySpeed2);	MyMouseLeftClick(MouseClickDelaySpeed1);	Delay(MouseClickDelaySpeed1 * 3);}OpenUpMerchantAndBuyAFullSetOfItem(){	//this macro assumes that you are "on top" of the merchant and 	KeyDown(vkKey_SelectNearestNPC);  //42 is the B button on the keyboard	Delay(MouseClickDelaySpeed1);	KeyUp(vkKey_SelectNearestNPC);	MouseMoveTo(1024 / 2, 768 / 2);	Delay(750);	MyMouseRightClick(MouseClickDelaySpeed1);	Delay(MouseClickDelaySpeed1);	MouseMoveTo(420,370);	Delay(750);	MyMouseLeftClick(MouseClickDelaySpeed1);	Delay(750);	for (var currentPage = 1; currentPage < ItemPage; currentPage++)	{		//first, find the icon to move to the next page.		var xStartPos = 890;		var yStartPos = 285;		DebugWriteLine("XStartPos: " + xStartPos + "; YStartPos: " + yStartPos);		if (IsObjectIn("GUI_Inventory_Page_Next",xStartPos,yStartPos,48,48,32))		{			DebugWriteLine("XEndPos: " + xStartPos + "; YEndPos: " + yStartPos);			MouseMoveTo(xStartPos+6,yStartPos+6);			Delay(MouseClickDelaySpeed1);			MyMouseLeftClick(DefaultMouseClickTime);			Delay(MouseClickDelaySpeed1);					} else {			throw "Error finding the next page in the inventory!";		}		Delay(MouseClickDelaySpeed2);			}			//now we're on the right page, so we need to find the location of the item.	var itemWidth = SellerPageWidth / SellerPageItemCountX;	var itemHeight = SellerPageHeight / SellerPageItemCountY;	var found = false;	var itemXPos = 0;	var itemYPos = 0;	if (!usingItemLocation)	{		for (var itemLocY = 0; itemLocY < SellerPageItemCountY; itemLocY++)		{			for (var itemLocX = 0; itemLocX < SellerPageItemCountX; itemLocX++)			{				var xStartPos = ceil(SellerPageStartX + (itemLocX * itemWidth));				var yStartPos = ceil(SellerPageStartY + (itemLocY * itemHeight));				if (IsObjectIn(ItemToUpgrade,xStartPos,yStartPos,12,12,32))				{						itemXPos = xStartPos + 12;					itemYPos = yStartPos + 12;					itemLocY = SellerPageItemCountY;					itemLocX = SellerPageItemCountX;					found = true;				}			}		}		if (!found)		{			throw "Unable to find the item! Are you sure you set the script up properly?";		}	} else {		found = true;		itemXPos = ceil(SellerPageStartX + (itemLocationX * itemWidth)) + 16;		itemYPos = ceil(SellerPageStartY + (itemLocationY * itemHeight)) + 16;	}		for (var i = 0; i < ((InventoryItemCountX * InventoryItemCountY) - 1); i++)	{		MouseMoveTo(itemXPos,itemYPos);		Delay(MouseClickDelaySpeed2);		MouseLeftDown();		Delay(MouseClickDelaySpeed1);		MouseMoveTo(			SellerInventoryStartX + (SellerInventoryWidth / 2),			SellerInventoryStartY + (SellerInventoryHeight / 2)			);		Delay(MouseClickDelaySpeed2);		MouseLeftUp();		Delay(MouseClickDelaySpeed1);	}}ThrowPageOfItemsIntoInn(){	KeyDown(vkKey_SelectNearestNPC);  //42 is the B button on the keyboard	Delay(MouseClickDelaySpeed1);	KeyUp(vkKey_SelectNearestNPC);	MouseMoveTo(1024 / 2, 768 / 2);	Delay(750);	MyMouseRightClick(MouseClickDelaySpeed1);	Delay(MouseClickDelaySpeed1);	MouseMoveTo(420,342);	Delay(750);	MyMouseLeftClick(MouseClickDelaySpeed1);	Delay(MouseClickDelaySpeed2 * 3);	var itemWidth = InnInventoryWidth / InventoryItemCountX;	var itemHeight = InnInventoryHeight / InventoryItemCountY;	for (var itemY = 0; itemY < InventoryItemCountY; itemY++)	{		for (var itemX = 0; itemX < InventoryItemCountX; itemX++)		{			DebugWriteLine("Checking spot " + itemX + "," + itemY);			var xStartPos = ceil(InnInventoryStartX + (itemX * itemWidth));			var yStartPos = ceil(InnInventoryStartY + (itemY * itemHeight));			DebugWriteLine("Coordinates: " + xStartPos + "," + yStartPos);			if (IsObjectIn(ItemToUpgrade,xStartPos,yStartPos,42,42,192))			{					MouseMoveTo(xStartPos + 10, yStartPos + 10);				Delay(MouseClickDelaySpeed2);				MouseLeftDown();				Delay(DefaultMouseClickTime);				MouseMoveTo(InnDropSpotX,InnDropSpotY);				Delay(DefaultMouseClickTime);				MouseLeftUp();				Delay(DefaultMouseClickTime);			}		}	}}UpgradeAFullPage(){	var itemWidth = AnvilInventoryWidth / InventoryItemCountX;	var itemHeight = AnvilInventoryHeight / InventoryItemCountY;	for (var itemY = 0; itemY < InventoryItemCountY; itemY++)	{		for (var itemX = 0; itemX < InventoryItemCountX; itemX++)		{			DebugWriteLine("Checking spot " + itemX + "," + itemY);			var xStartPos = ceil(AnvilInventoryStartX + (itemX * itemWidth));			var yStartPos = ceil(AnvilInventoryStartY + (itemY * itemHeight));			DebugWriteLine("Coordinates: " + xStartPos + "," + yStartPos);			if (IsObjectIn(ItemToUpgrade,xStartPos,yStartPos,42,42,192))			{				DebugWriteLine("Found item at: " + xStartPos + "," + yStartPos);				MouseMoveTo(xStartPos + 12, yStartPos + 12);				Delay(MouseClickDelaySpeed1);				MyMouseRightClick(MouseClickDelaySpeed1);				Delay(MouseClickDelaySpeed1);				MouseMoveTo(					AnvilInventoryStartX + AnvilInventoryWidth - (itemWidth / 2),					AnvilInventoryStartY + AnvilInventoryHeight - (itemHeight / 2)					);				Delay(MouseClickDelaySpeed2);				MyMouseRightClick(MouseClickDelaySpeed2);				Delay(MouseClickDelaySpeed2);				MouseMoveTo(760,280);				Delay(MouseClickDelaySpeed2);				MyMouseLeftClick(MouseClickDelaySpeed2);				Delay(MouseClickDelaySpeed2);				MouseMoveTo(740,350);				Delay(MouseClickDelaySpeed2);				MyMouseLeftClick(MouseClickDelaySpeed2);				Delay(MouseClickDelaySpeed2);				DebugWriteLine("Upgrading...");				MouseMoveTo(500,200);				Delay(MouseClickDelaySpeed2);								//now we need to wait for the anvil to finish upgrading....				var doneWaiting = false;				DebugWriteLine("Waiting For Anvil...");				Delay(MouseClickDelaySpeed2 * 6);				while (!doneWaiting)				{					DebugWriteLine("Wait...");					var dax = AnvilWatchStartX; //I can't juse use the const values because the function					var day = AnvilWatchStartY; //stores the actual item coords in the start vars...					if (IsObjectIn("GUI_Anvil_Empty_And_Clear",dax,day,32,32,192))					{						doneWaiting = true;					}					Delay(MouseClickDelaySpeed2);				}				Delay(MouseClickDelaySpeed1);								//Delay(6000);			}		}	}}UpgradeItemsInInventory(var numberOfUpgrades){	for (var i = 0; i < numberOfUpgrades; i++)	{		UpgradeAFullPage();	}}MoveFromMerchantToAnvil(){	MovePlayerTo(386,369);	MovePlayerTo(340,372);	MovePlayerTo(330,384);	MovePlayerTo(323,376);	MovePlayerTo(336,388);}MoveFromAnvilToHumanInn(){		MovePlayerTo(328,381);	MovePlayerTo(320,409);	MovePlayerTo(364,421);}MoveFromHumanInnToArmorMerchant(){	MovePlayerTo(374,399);	MovePlayerTo(386,369);	MovePlayerTo(397,362);}MoveFromHumanInnToWeaponMerchant(){	MovePlayerTo(374,399);	MovePlayerTo(386,369);	MovePlayerTo(397,372);}main(){	//initial startup.... make sure window has input focus...	MouseMoveTo(1024 / 2, 768 / 2);	Delay(2000);	MouseClick(1);		MovePlayerTo(386,369);	if (usingWeaponMerchant)	{		MovePlayerTo(397,372);	} else {		MovePlayerTo(397,362);	}		while(true)	{		ToggleFirstToThird();		OpenUpMerchantAndBuyAFullSetOfItem();		ToggleFirstToThird();				MoveFromMerchantToAnvil();				ToggleFirstToThird();		OpenAnvilForUpgrading();		ToggleFirstToThird();				UpgradeItemsInInventory(6);						MoveFromAnvilToHumanInn();					ToggleFirstToThird();		ThrowPageOfItemsIntoInn();		ToggleFirstToThird();					if (usingWeaponMerchant)		{			MoveFromHumanInnToWeaponMerchant();		} else {			MoveFromHumanInnToArmorMerchant();		}	}}