|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Development::GeorgeS's Tools A forum just for GeorgeS's tools |
10-22-2007, 05:43 PM
|
Developer
|
|
Join Date: Mar 2007
Location: Ohio
Posts: 648
|
|
Quote:
Originally Posted by gernblan
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).
|
10-23-2007, 03:00 AM
|
Discordant
|
|
Join Date: May 2004
Posts: 290
|
|
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.
|
10-23-2007, 03:11 AM
|
Demi-God
|
|
Join Date: Jul 2006
Posts: 1,552
|
|
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.
|
10-23-2007, 12:49 PM
|
Discordant
|
|
Join Date: Aug 2006
Posts: 394
|
|
Quote:
Originally Posted by AndMetal
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!
__________________
--
Keelyeh
Owner, ServerOp and Developer
Jest 4 Server
Linux (Jest3 runs on Fedora, our Dev servers usually run on Ubuntu and/or Gentoo), OC-12 Connection = Hella Fast
|
10-23-2007, 12:50 PM
|
Discordant
|
|
Join Date: Aug 2006
Posts: 394
|
|
Quote:
Originally Posted by John Adams
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!
__________________
--
Keelyeh
Owner, ServerOp and Developer
Jest 4 Server
Linux (Jest3 runs on Fedora, our Dev servers usually run on Ubuntu and/or Gentoo), OC-12 Connection = Hella Fast
|
|
|
|
10-23-2007, 06:42 PM
|
Forum Guide
|
|
Join Date: Sep 2003
Location: California
Posts: 1,474
|
|
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
|
|
|
|
|
|
|
10-24-2007, 08:20 AM
|
Developer
|
|
Join Date: Mar 2007
Location: Ohio
Posts: 648
|
|
Quote:
Originally Posted by Theeper
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.
|
|
|
|
10-24-2007, 03:27 PM
|
Discordant
|
|
Join Date: May 2004
Posts: 290
|
|
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.
Last edited by Theeper; 10-24-2007 at 11:27 PM..
Reason: typo
|
10-25-2007, 02:32 AM
|
Forum Guide
|
|
Join Date: Sep 2003
Location: California
Posts: 1,474
|
|
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
|
|
|
|
11-04-2007, 12:44 PM
|
Forum Guide
|
|
Join Date: Sep 2003
Location: California
Posts: 1,474
|
|
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
|
|
|
|
11-09-2007, 09:19 AM
|
Developer
|
|
Join Date: Oct 2004
Location: THE ATL (wut wut)
Posts: 325
|
|
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
__________________
Daxum
Former ServerOp - Vallon Zek / Tallon Zek Emu Server - Legit / Guild PvP - (2007 - 2011 RIP)
|
11-09-2007, 10:08 AM
|
Discordant
|
|
Join Date: Jun 2005
Posts: 286
|
|
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
__________________
-Croup (the rogue)
Creator of Pandemic (PvP-Racewars)
|
11-09-2007, 02:45 PM
|
Developer
|
|
Join Date: Oct 2004
Location: THE ATL (wut wut)
Posts: 325
|
|
Quote:
Originally Posted by moydock
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
__________________
Daxum
Former ServerOp - Vallon Zek / Tallon Zek Emu Server - Legit / Guild PvP - (2007 - 2011 RIP)
|
11-09-2007, 04:41 PM
|
Forum Guide
|
|
Join Date: Sep 2003
Location: California
Posts: 1,474
|
|
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
|
11-10-2007, 10:35 AM
|
Developer
|
|
Join Date: Oct 2004
Location: THE ATL (wut wut)
Posts: 325
|
|
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
__________________
Daxum
Former ServerOp - Vallon Zek / Tallon Zek Emu Server - Legit / Guild PvP - (2007 - 2011 RIP)
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 12:09 PM.
|
|
|
|
|
|
|
|
|
|
|
|
|