EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Development::GeorgeS's Tools (https://www.eqemulator.org/forums/forumdisplay.php?f=674)
-   -   New tool - SERVERSTATS (https://www.eqemulator.org/forums/showthread.php?t=23736)

AndMetal 10-22-2007 05:43 PM

Quote:

Originally Posted by gernblan (Post 139727)
PLEASE, can you post this?

It would be invaluable.

I just created an entry in the Wiki: ConvertProfile

I commented out all of the unknown fields, but did add in the "code" to read them into the array.

I would also like to note that you will need to add in a value for the $db variable, which allows the connection to the database (I use another included file that stores the db login info for all of the pages I use).

Theeper 10-23-2007 03:00 AM

Maybe I don't understand this, but wouldn't it be easier to just to create a format and unpack() the whole binary struct ? Especially if you want to repack it and update the DB.

I got about 1/3 of the way through creating the format before I got bored and moved on to something more interesting.

John Adams 10-23-2007 03:11 AM

I too took apart the player profile bit by bit, so I could understand it. It's pretty easy to see where things are using the struct, or at least that's where I see the values. And yes, it is huge and mind boggling. I was looking for one variable, which I never found. ;)

gernblan 10-23-2007 12:49 PM

Quote:

Originally Posted by AndMetal (Post 139742)
I just created an entry in the Wiki: ConvertProfile

I commented out all of the unknown fields, but did add in the "code" to read them into the array.

I would also like to note that you will need to add in a value for the $db variable, which allows the connection to the database (I use another included file that stores the db login info for all of the pages I use).

Excellent work so far!

gernblan 10-23-2007 12:50 PM

Quote:

Originally Posted by John Adams (Post 139758)
I too took apart the player profile bit by bit, so I could understand it. It's pretty easy to see where things are using the struct, or at least that's where I see the values. And yes, it is huge and mind boggling. I was looking for one variable, which I never found. ;)

And you too, Sir! :)

GeorgeS 10-23-2007 06:42 PM

Progress to date -

Right now you can
- find out what items drop in a zone by NPC (done)

- Identify if an item drops or is sold or player made (done)
- view NPC in a zone by level/min max/avg levels,spawngroup (done)
- account profile, character del/moving/editing (as discussed before) (done!)
- tag/poll/monitor accounts for suspicious behaviour (done!)
- view/parse #commands by users (log file parser) - (not done)
- modify loot drops by selected npc's (not done)

- more as time permits..


The poll monitor works great as of tonight!
Next is the loot editor, then log parser, then it's out for release - perhaps by this weekend.

Account monitor detail -
The account montor looks at any number of selected accounts/toons for level and coin (delta values) over time. All data are saved to a log file and plotted real time as well.
You can select a polling interval in minutes, and the program then runs in the background and polls all night long for you.


GeorgeS

AndMetal 10-24-2007 08:20 AM

Quote:

Originally Posted by Theeper (Post 139756)
Maybe I don't understand this, but wouldn't it be easier to just to create a format and unpack() the whole binary struct ? Especially if you want to repack it and update the DB.

I got about 1/3 of the way through creating the format before I got bored and moved on to something more interesting.

unpack() is certainly one way to do it. As a matter of fact, I started to work on a version of the same script to utilize unpack, but it can be difficult to modify if the profile blob ever changes, or if you make a mistake somewhere in the script. Not only that, but you would probably run into some issues when you have to create sub-arrays, like for bind points, item materials, item tints, AA's (which current has 240 sub-arrays), languages, spells in the spell book, memorized spells, skills, buffs, group members, tributes, disciplines, leadership abilities, bandoliers, and potion belts (whew!). The easiest way I've found so far to handle those is using for() statements. Otherwise, the script would be about 3x larger than it is right now. But, I do use it to convert data types (to float for example).

As far as efficiency, I'm not sure if unpack would take less time to process. I do know that, on the initial load (query and all), the page takes between 0.8 seconds & 1.3 seconds for PHP to process (including a Magelo-like character viewer), and on subsequent loads (after the query is cached), it takes between 0.3 seconds & 0.7 seconds to process. Of course, my server is a 433 MHz processor w/ 256MB of RAM that I had laying around.

As far as putting it back into the database, that's the easy part. There is a function, bin2asc(), listed on the page that converts the info from binary back to the ASCII format the blob is in. You can then inject it into the original $profileResult using substr_replace() or rebuild it from the array, and post it back into the database. The part I have been having trouble figuring out is the checksum, which I assume is the checksum of the blob, which I also assume prevents you from just injecting the changed info (although I haven't tested this yet). I've found how it is calculated in the source (see the checksum field in profile schema ), but I'm having some trouble understanding it.

Theeper 10-24-2007 03:27 PM

Great work George. Interesting idea of plotting player data on graphs. Are you going to export that data to a custom table ?

AndMetal, I am not sure how else you can modify all the values and reliably put the binary data back together without first specifying the format. I agree looping through all those arrays is a real pain though. But, if you created an array of the individual formats and strung them together to make the format string, it wouldn't be that hard to modify if the struct changed. I did consider writing a script to parse the header file and write the format for me at one time :p~

Sorry to hijack your thread George.

GeorgeS 10-25-2007 02:32 AM

Export to a new table - I could implement that easily. I was going to dump to a text file, but a table may be better. I'll look into that.

The graph is pretty neat. It allows you to check coin inventory or level of any characters over time.

I'm working on the log file parser today. This will enable one to see what #commands were used by any one in game. This is pretty easy, but the loot drop editor section will be a bit harder.


GeorgeS

GeorgeS 11-04-2007 12:44 PM

Finished and uploaded the final version tonight.
http://66.159.225.58/eqemu/serverstats.zip

This release allows you to -
-view npc and their spawngroup in a zone
-View/Edit loot dropped in any zone
-Search for Items
-View and edit account data and associated toons
-Find which npc's dropped selected items
-Are selected items crafted or sold my merchants
-Account monitor - watch toons over time (level/coin)
-New loot editor (fully functional now)
-What #commands did your GM's or players use and when
-Class/Race Reference guide
-Edit Zone safe x/y/z, min level and min status. Other fields are read only
-Database backup tool. Backs up account/character_,faction_vales and inventory tables. You can also restore these tables if they break.


Although I've tested this with success on my MySQL server ver 4.x, you may encounter issues I did not. In any case, report any bugs to me.

Have fun with it. BTW - there's no help yet, but the tool's pretty straightfwd.

GeorgeS

TheLieka 11-09-2007 09:19 AM

First off, I really like this tool. The main issue I've had is with loading the accounts. It errors out on both my live and dev server databases (unfortunately, it doesn't let me scroll down while it's loading, and doesn't tell me which account is causing the issue, so I don't know). Here are the error messages that I get (different error for live and dev):

Live Database
http://img70.imageshack.us/img70/571...tserrordv6.png

Dev Database
(got to get the error for the dev database)

Dax

moydock 11-09-2007 10:08 AM

I'd really like to try this out but I can't get it working with Windows Vista Ultimate. Ran register_ocx with admin rights and restarted. No good so far.
I get, "Component 'TABCTL32.OCX' or one of its dependencies not correctly registered: a file is missing or invalid", when i try to run it.
Thanks

TheLieka 11-09-2007 02:45 PM

Quote:

Originally Posted by moydock (Post 140273)
I'd really like to try this out but I can't get it working with Windows Vista Ultimate. Ran register_ocx with admin rights and restarted. No good so far.
I get, "Component 'TABCTL32.OCX' or one of its dependencies not correctly registered: a file is missing or invalid", when i try to run it.
Thanks

I'm running XP Pro, and mine was missing "mschrt20.ocx". I found and downloaded it online, then registered it, and all was well.

Dax

GeorgeS 11-09-2007 04:41 PM

Thanks for the feedback. I updated the tool to register those ocx's in case you don't have them - now are provided in the zip

Also regarding the 3001 error. I'm getting this as the major bug reported right now. I am running XP and mysql 4.x and it works ok. Now I'm guessing you're all running mysql 5.x.

I'm just tempted to get vista just to help debug things like this. I'm almost certain it's the mysql handling of blobs causing this. Now I'm upgrading to mysql 5.x and will get this issue fixed asap.

GeorgeS

TheLieka 11-10-2007 10:35 AM

Thanks George. I just installed the new build on my dev server (Windows Server 2003 R2 SP2) and it needed mscomct2.ocx. Again, I just downloaded and registered it.

Dax


All times are GMT -4. The time now is 06:39 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.