Grand fantasia

You may request or share scripts for MicroMacro in this forum.
Message
Author
User avatar
MiesterMan
Posts: 543
Joined: Tue Jul 06, 2010 9:15 pm
Location: Between the Second and Third Circles of Hell

Re: Grand fantasia

#21 Post by MiesterMan » Mon Dec 05, 2011 5:06 am

Yep, did lots and lots of that.

Eventually I found that at some point I broke my pawn function (probably testing something else).

I removed all the memory read repeats because they were making the function take forever. Not exactly sure why but if you can find a way to work them in after I post the code please do.

So, I have the objects list and a function that displays them.

Edit: I take that back, I have some object list, doesn't seem to have everything though.

User avatar
MiesterMan
Posts: 543
Joined: Tue Jul 06, 2010 9:15 pm
Location: Between the Second and Third Circles of Hell

Re: Grand fantasia

#22 Post by MiesterMan » Mon Dec 05, 2011 5:52 am

Ok, done for now.

So we're on the same page my current addresses and pawn functions are:

Code: Select all

addresses = {

--baseAddress				= 0xA6C90C,
baseAddress				= 0xA7594C,

--= Level 1 offsets =--
X_offset				= 0x24,
Y_offset				= 0x28,
combatbase_offset		= 0x1C,
pawndata_offset		 	= 0x8,


--= Level 2 offsets =--

-- Offset from combatbase
combat_offset			= 0x3C,

-- Offset from pawndata
Name_offset				= 0xE0,
Gold_offset				= 0xC,
lvl_offset				= 0x18,
xp_offset				= 0x14,
HP_offset				= 0x4,
MAXHP_offset			= 0x48,
MP_offset				= 0x8,
MAXMP_offset			= 0x4C,
skillcharges_offset		= 0xC4,

targettype_offset		= 0xA710C,

-- I didn't touch any sprite, mouse, or camera pointers - MiesterMan (also, I saw the login info but didn't itqw	qw	qw	qw	qw	qw	qw)
--=== sprites ===--
sprite1baseAddress		= 0xA74490,

sprite3baseAddress		= 0xA7448C,
spriteAddress_offset	= 0xEC,
spritestamina_offset	= 0x1A4,

--=== mouse and camera ===--
mouseX					= 0xA71B54,
mouseY					= 0xA71B58,

--=== misc ===--
windowsaddress			= 0xA71AD4, -- number of windows on screen
windowsaddress_offset	= 0x38,
accountname				= 0xA6CE60,
accountpass				= 0xA6CE7C,
servername				= 0xA6CE98,


-- possible table 0x93673C, 0x931548
--playercasting_offset = memoryReadRepeat("int", getProc(), playerAddress - 0x13D28 ) -- needs work
}
--= Level 0 offsets =-- (I wanted to use the base addr so I put this after the initial declaration)
addresses.targetbase	= addresses.baseAddress + 0x70;
addresses.havetarget	= addresses.baseAddress + 0x84; 

Code: Select all

CPawn = class(
	function (self, ptr)
		self.Address = ptr;
		self.Name = "<UNKNOWN>";
		self.Id = -1;
		self.GUID  = 0;
		self.Type = PT_NONE;
		self.Level = 1;
		self.HP = 10;
		self.MaxHP = 10;
		self.MP = 10;
		self.MaxMP = 10;
		self.Gold = 0;
		self.X = 0.0;
		self.Y = 0.0;
		self.Z = 0.0;
		self.Direction = 0.0;
		self.Attackable = false;
		self.Alive = true;
		self.Mounted = false;
		self.IgnoreTarget = 0;
		self.Aggressive = false;

		self.Buffs = {};

		-- Experience tracking variables
		self.LastExpUpdateTime = os.time();
		self.LastExp = 0;				-- The amount of exp we had last check
		self.ExpUpdateInterval = 10;	-- Time in seconds to update exp
		self.ExpTable = { };			-- Holder for past exp values
		self.ExpTableMaxSize = 10;		-- How many values to track
		self.ExpInsertPos = 0;			-- Pointer to current position to overwrite (do not change)
		self.ExpPerMin = 0;				-- Calculated exp per minute
		self.TimeTillLevel = 0;			-- Time in minutes until the player will level up


		-- Directed more at player, but may be changed later.
		self.Harvesting = false; -- Whether or not we are currently harvesting
		self.Battling = false; -- The actual "in combat" flag.
		self.Fighting = false; -- Internal use, does not depend on the client's battle flag
		self.Casting = false;

		self.BotStartTime = os.time(); -- Records when the bot was started.
		self.level_detect_levelup = 0;	-- remember player level to detect levelups
		self.Sleeping = false;		-- sleep mode with fight back if attacked
		self.Sleeping_time = 0;		-- counts the sleeping time
		self.Fights = 0;			-- counts the fights
		self.Last_ignore_target_ptr = 0;		-- last target to ignore address
		self.LastTargetPtr = 0;		-- last invalid target
		self.Last_ignore_target_time = 0;		-- last target to ignore time
		self.lastHitTime = 0;				-- last time the HP of the target changed
		self.TargetIcon = true
		self.InParty = false

		if( self.Address ~= 0 and self.Address ~= nil ) then self:update(); end
	end
);

function CPawn:update()
	local proc = getProc();
	
	self.baseAddress	= memoryReadInt(proc, self.Address);
	self.dataAddress	= memoryReadRepeat("int", proc, self.baseAddress + addresses.pawndata_offset)
	self.X				= memoryReadFloat(proc, self.baseAddress + addresses.X_offset)
	self.Y				= memoryReadFloat(proc, self.baseAddress + addresses.Y_offset)
	if self.dataAddress then
	self.Level			= memoryReadInt(proc, self.dataAddress + addresses.lvl_offset)
	self.HP				= memoryReadInt(proc, self.dataAddress + addresses.HP_offset)
	self.NamePtr		= memoryReadInt(proc, self.dataAddress + addresses.Name_offset)
	if ((self.NamePtr) and not (self.NamePtr == 0)) then
--		printf("%x \t",self.NamePtr);
		self.Name			= memoryReadString(proc, self.NamePtr)
	end
	self.MaxHP			= memoryReadInt(proc, self.dataAddress + addresses.MAXHP_offset)
	self.MP				= memoryReadInt(proc, self.dataAddress + addresses.MP_offset)
	self.MaxMP			= memoryReadInt(proc, self.dataAddress + addresses.MAXMP_offset)
	self.skillcharges	= memoryReadInt(proc, self.dataAddress + addresses.skillcharges_offset)
	self.Gold			= memoryReadInt(proc, self.dataAddress + addresses.Gold_offset)
	self.xp				= memoryReadInt(proc, self.dataAddress + addresses.xp_offset)
	end
end

User avatar
lisa
Posts: 8330
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: Grand fantasia

#23 Post by lisa » Mon Dec 05, 2011 6:12 am

Looks like you did some nice work, better then me anyway, I was struggling to find the object lists.

Hopefully I will get some time to check it out later this week.
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

User avatar
MiesterMan
Posts: 543
Joined: Tue Jul 06, 2010 9:15 pm
Location: Between the Second and Third Circles of Hell

Re: Grand fantasia

#24 Post by MiesterMan » Mon Dec 05, 2011 9:32 pm

There are some major problems with the object list I found. It's incomplete. I'm not sure what kind of list it is but it definately returns some of the objects in the area.

If I get a chance I'll look at the other addresses that the list might be in.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest