Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Tools

Development::Tools 3rd Party Tools for EQEMu (DB management tools, front ends, etc...)

Reply
 
Thread Tools Display Modes
  #1  
Old 09-15-2008, 12:52 AM
cybernine186
Sarnak
 
Join Date: Feb 2008
Posts: 87
Default

Quote:
Originally Posted by cavedude View Post
I finally got a chance to really kick the tires of this program. The issues I have found are:

- I could not figure out how to restore a toon from a backup. I click on restore backup next to the toon on the account screen. I see the list of backups, but where it looks like the restore button should be (to the left of the delete button) there is nothing there. When I refresh the page, for a split second I see an icon pop up but then it disappears.

- The AA screen doesn't work. Most of the values are 0s, even though the player does have points and points spent. Sometimes values do show up, but they are not correct. I didn't try editing as I didn't want to mess up toons. If you need me to, I can test further on a mule toon.

- Minor problem, I get a warning: "Warning: Missing argument 5 for f_menu() in /home/httpd/html/eqeditor/includes/lib/functions.php on line 288" right above the insert faction box. However, it does seem to work. I see all of the factions, and I am able to insert new ones.

I've tried the vast majority of other options, and they all work great! Outstanding work, this has saved me a ton of time. I have to admit, I was surprised when things like spell scribing or corpse manipulation actually worked, it's was a too good to be true feeling!

IMO, the only thing this is missing is bind point manipulation, the ability to view/edit quest_globals and zone flags, and now that telnet support is in, the ability to feed it your own commands and receive the output. Other than that this program is pure perfection!

1. I will check this out, however it uses javascript. Check to see if you allowed javascript to be run on that page.

2. Very ODD.... Use the advance editing and see if it displays right. It should be AA ID and AA Value listed. What version source code are you using? Can you send me a copy of a couple of your characters back files for testing?

3. It will work just fine with that error message, I will fix the message though. The 5th field is optional not required.

4. Will work on adding those features, they shouldn't take long to add in the system.


Thank you for testing this out.... Can you confirm that the Telnet code works correctly?
Reply With Quote
  #2  
Old 09-17-2008, 04:14 PM
lockjaws
Fire Beetle
 
Join Date: Jun 2008
Location: UK
Posts: 13
Default

Looks like a Fantastic tool can't wait to try this out but, it seems the hosting site is always busy would anyone happen to have an addition download link for this?
Reply With Quote
  #3  
Old 09-17-2008, 04:47 PM
spoon
Sarnak
 
Join Date: Aug 2007
Posts: 34
Default

Quote:
Originally Posted by lockjaws View Post
Looks like a Fantastic tool can't wait to try this out but, it seems the hosting site is always busy would anyone happen to have an addition download link for this?
Try http://drop.io/eqeditor1_20
Reply With Quote
  #4  
Old 09-17-2008, 05:17 PM
lockjaws
Fire Beetle
 
Join Date: Jun 2008
Location: UK
Posts: 13
Default

Quote:
Originally Posted by spoon View Post
Brilliant, Thanks Spoon, much appreciated
Reply With Quote
  #5  
Old 09-17-2008, 05:56 PM
cybernine186
Sarnak
 
Join Date: Feb 2008
Posts: 87
Default

I need some characters with AA's from a database for testing. I think I may have the pointer wrong that it is looking in the profile for the AA structure.

Can you send me a copy of some characters with AA's

Cybernine186@gmail.com
Reply With Quote
  #6  
Old 09-17-2008, 10:37 PM
spoon
Sarnak
 
Join Date: Aug 2007
Posts: 34
Default

Sounds like you are close to finish debugging the AAs but if not one thing I was noticing with 1.20 was the AAs listed in default mode did not match the AAs available for the class being edited (beastlord AAs for a ranger). Adding unused AAs seemed to work. I did not test any of this very well though.

--Spoon
Reply With Quote
  #7  
Old 09-18-2008, 01:53 AM
cybernine186
Sarnak
 
Join Date: Feb 2008
Posts: 87
Default

If cavedood is having problems with the AA's and not viewing right then that means it will not read the correct aa's or write them.

This is written for the latest version of the source. If you are using an old packet structure then this entire program might not work, its untested.

Works with titanium clients other than that..... I dont know.
Reply With Quote
  #8  
Old 09-18-2008, 03:04 AM
AndMetal
Developer
 
Join Date: Mar 2007
Location: Ohio
Posts: 648
Default

Quote:
Originally Posted by cybernine186 View Post
I think I may have the pointer wrong that it is looking in the profile for the AA structure.
I definitely can't hold this against you, even though it's (buried, hardcore style) in the Wiki (I put it there for this exact reason ), but this should answer this issue:
Quote:
aa_array

Even though the source says this starts at 0432, it actually starts at 0428 (item_tint: 0392 + 36).

struct AA_Array
{
int32 AA;
int32 value;
};
I think what ended up happening when I first read the AA info in my PHP tool I started a while back was it had things a little backwards (indexes were the values, and they were off by 1 set I think).

Hope this helps.
__________________
GM-Impossible of 'A work in progress'
A non-legit PEQ DB server
How to create your own non-legit server

My Contributions to the Wiki
Reply With Quote
  #9  
Old 09-18-2008, 04:34 AM
AndMetal
Developer
 
Join Date: Mar 2007
Location: Ohio
Posts: 648
Default

Looks like I was right:
aa.php
Code:
	// Find the AA ID in the profile or select a new slot to train the AA
	for($x = 1; $x <= 240; $x++){
		
		// AA ID Value
		$aa_id = asc2uint(substr($char->profile,$x*8+428,4));

		// Find first open available slot in profile
		if($aa_id == 0){
			if(!isset($aa_open)){
				$aa_open = $x;
			}
		}

		// if train_id matches a previous AA then stop and save the slot #
		if($_POST['train_id'] == $aa_id){
			$aa_slot = $x;
			$aa_value = asc2uint(substr($char->profile,$x*8+432,4));
			break;
		} elseif(($aa_id == 0) && ($aa_open < 1)) {
			$aa_open = $x;
		}
	}

...

for ($x = 1; $x <= 240; $x++) {
	$aa_array[asc2uint(substr($char_blob,$x*8+428,4))] = asc2uint(substr($char_blob,$x*8+432,4));
}
Should be able to fix this one of 2 ways: either change the for values to 0/239 instead of 1/240, or change the substring to ($x-1)*8+428/($x-1)*8+432. I personally went the first route.

Should also be some more in aa_adv.php:
Code:
for ($x = 1; $x <= 240; $x++) {
	$aa_array[$x] = array( 0 => asc2uint(substr($char_blob,$x*8+428,4)), 1 => asc2uint(substr($char_blob,$x*8+432,4)));
}
It also looks like the locations are defined in schema.sql, so that will be the semi-hard part:
Code:
UPDATE editor_values SET location = (location - 8) WHERE name LIKE 'aa_%'
One thing I'm not sure about with the above code, though, is that the server is really weird about how it reads and stores the AA values. The ID is basically the ID in the profile minus the value it is set to minus 1. I think it's mainly because the IDs sort-of start at 0, not 1 (which is mainly why I ended up starting from 0 instead of 1).

The part that writes the values looks right, but I'm not sure about how it pulls it later in the code. This is how I ended up reading it (is kinda old, so a little sloppy):
Code:
// AA_Array[240]
	for ($x = 0; $x <= 239; $x++) {
		$aa = asc2uint(substr($profileResult,$x*8+428,4));
		$value = asc2uint(substr($profileResult,$x*8+432,4));
		if ($aa != 0) {
			$Profile["aa_array"][($aa-($value-1))] = $value;
		};
		unset($aa);	// Probably not very efficient...
		unset($value);	// Same...
	};
	unset($aa);
	unset($value);
Could probably do it a little better this way:
Code:
// AA_Array[240]
	for ($x = 0; $x <= 239; $x++) {
		$aa = asc2uint(substr($profileResult,$x*8+428,4));
		if ($aa != 0) {
			$value = asc2uint(substr($profileResult,$x*8+432,4));	// 1 call to constant > 2 calls to variables/functions
			$Profile["aa_array"][($aa-($value-1))] = $value;
		};
		$aa = 0;	// Otherwise, can cause some issues in the loop since it carries over
		$value = 0;	// Same
	};
	unset($aa);	// Help free a little memory
	unset($value);	// Same
On a somewhat unrelated note, just as an added feature, you may want to include the AA description in somewhere (I didn't see it, unless I overlooked it):
Code:
SELECT text FROM editor_dbstr WHERE type = 4 AND id = $aa_value[0]
For reference, this is a query I used for viewing the AA info, including text loaded in a table "dbstr_us" (I tried to make a window as close to the client as I could):
Code:
SELECT a.skill_id, a.name, a.cost, a.max_level, a.spellid, (a.classes + a.berserker) AS classes, d.text FROM altadv_vars a, dbstr_us d WHERE a.skill_id=d.id1 AND d.id2='4' AND a.type='$_GET[type]' AND classes & '$ClassesBit[$_GET["class"]]' ORDER BY a.skill_id
Anyways, enough of my rambling, this should take care of the original issue.
__________________
GM-Impossible of 'A work in progress'
A non-legit PEQ DB server
How to create your own non-legit server

My Contributions to the Wiki
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 05:25 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3