Log in

View Full Version : Working SEQ alternative



Pages : [1] 2

cavemanbob
04-05-2003, 02:59 PM
Attached is the source for a program that implements most of the seq features that i found useful. This is provided as is and I will provide NO support for getting it running or compiled whatsoever, and just assume that any bugs that you may find are already known. I may or may not finish developing this I haven't decided yet.

The server is writen in C and reads the spawn info directly from memory and transmits the data to the server. The server is completely written in managed C#. As such the .NET framework and a C compiler that has the windows platform SDK is required to build this.

Once compiled, just start the server on the EQ machine, set the proper IP address on the client (127.0.0.1 if it's the same machine) and hit GO...

http://alteria.sf.net/myseq.zip

EDIT: Almost forgot, put the seq maps in a directory called maps with the client exe

EDIT: Small update to the code to fix the annoying flickering and mostly fixed threading bug... has been uploaded now

Sixes
04-05-2003, 06:12 PM
Originally posted by cavemanbob
As such the .NET framework and a C compiler that has the windows platform SDK is required to build this.

Fancy posting binaries for those of us who work exclusively with gcc and make? Yes, I'll trust you not to do naughty things. :)

cavemanbob
04-05-2003, 06:20 PM
Binaries: http://alteria.sf.net/myseq-bin.zip

sauron
04-05-2003, 09:25 PM
Wow this proggy looks pretty sweet!

In the Nexus, it works perfectly, but I quickly noticed two problems.

#1, I go to PoK, and it says it can't find "PoKnowledge.map" but the map *is* there.

#2 (big problem) when I am in PoK or Great Divide, the NPC list on the left keeps reseting over and over, redrawing the spawn names... It never comes out of it until I zone (and no updates are drawn to the map either).

I know it's released unsupported so I don't except any fixes whatsoever ( <--anti-flame disclaimer), but since this thread is talking about this proggy, I wanted to leave feedback here as to what I found.

All in all, if the "list redrawing" problem is fixed, this thing looks a LOT like SEQ did! Really nice work!

cavemanbob
04-05-2003, 09:31 PM
The map thing is due some of the old showeq maps being having some invalid lines in them... I have a set that are fixed, but haven't uploaded them or fixed the map loader to ignore these problems. I'll likely fix it later tonight, as for the list thing I'm almost positive I have the problem nailed down to a race condition with the net thread... Hopefully the scroll bars will work shortly as well

cavemanbob
04-06-2003, 12:00 AM
OK, new version up, map not loading thing *should* be fixed for all maps except twilight.map which has 2 lines that have newlines in the middle of them.... If any except twilight don't work let me know as I haven't tested them all yet. The listbox doing weird stuff should be fixed for good as well as a bunch of non thread safe junk. Next 2 things to get done are the scrollbars and making the scaling work in a more sane way.

The binaries are included with the source this time as well

http://alteria.sf.net/myseq.zip

EvilNecro
04-06-2003, 12:20 AM
Great Job Cavemanbob!

I've been looking for a reason to poke at C#.

Is the flicker in the map re-draw cause direct x isn't implemented yet or because I have slow video and cpu in my second linux/windows pc?

At any rate it's awesome as it is, thanks for sharing! :)

cavemanbob
04-06-2003, 01:22 AM
The flickering was because I was drawing directly to the GDI surface and it should be gone in the newest version, let me know if it's not.... I tried using DirectDraw, but it wasn't really any better given the low redraw rate and such.

As a sidenote there's still a bug where mobs don't dissapear from the listbox when they should... I'm going to hunt this one down tomorrow I hope

This was the first bigger thing i've tried in c# and I've been impressed with it overall other then the current dependence on windows (not that big a deal IMO). I've found it to be very similar to java in many ways, but much faster and the libraries are much more consistant. There are a couple of bugs that really annoy me though, especially one in the string class hehe

seqcleric
04-06-2003, 05:09 AM
Heyya caveman, got some questions, i know you're not officially supporting this yet, but i'm hoping you can tell me what i'm doing wrong.

I load the server on the machine I play EQ on. There is nothing else to do to this machine, right?

Then, I load the client which is found in the folder that i created and popped all my seq maps into.
(Note, could you zip up the maps YOU are using and provide a link to them as well? This may be part of the trouble)

I've gotten the map to populate the spawn list on the side but can see no mobs in the actual map part of the program. Also, i've only gotten the spawn list to populate once. Then, after i zoned, it never worked again.

Now, the questions:

First, do you have to manually load the maps yourself or should the program load them for you?

Is there anything special you need to do to the server part of the program?

When you zone, should it repopulate automatically?

Is there any special OS I should be running? (Like what do you run? I'm using Win2K)

Is it possible that I need to compile the stuff on my side instead of using your ready made Bin's, is that a possible reason why it's not working?

Thanks in advance for your time, this looks like it's going to be a GREAT viable alternative!

Sincerely,
Seqcleric

Edited to clarify some of my questions ;)

Sixes
04-06-2003, 07:19 AM
This is excellent stuff. Thank you, CavemanBob.

One question, nothing to do with ShowEQ so a little cheeky. In order to maintain our web-based guild-management tool, I have to copy the data shown by the in-game tool manually. How difficult would it be to get the server to read this data and have it available to a client process, perhaps on another port? It would save me (and probably most guilds) vast amounts of time.

Amadeus
04-06-2003, 11:25 AM
Well...on my main box the client works fine. On my other box, which is running the same OS, I Get this message:



The Application failed to initialize properly (0xc0000135). Click on OK to terminate the application.

sillypuddy
04-06-2003, 11:56 AM
You need to load you framework .Net Files for the app to work. Download the below and give it a shot.

http://www.microsoft.com/downloads/details.aspx?FamilyId=4C1B6B0B-439E-4DB4-849A-B72416F40300&displaylang=en :rolleyes:

cavemanbob
04-06-2003, 01:12 PM
Adadeus: I suspect sillypuddy is correct, sounds like .NET isn't installed, otherwise if it's on there let me know and I'll look into it

Sixes: I'll look into this, could be a cool feature....

seqcleric: I run Win2K as well, latest service pack, so that shouldn't be a problem. It should repopulate and load the map when it's started or when you zone and the server jsut needs to be started on the EQ machine. What may be happening is the data stream is getting offset a bit and never getting back on track. At the default settings the server is transmitting quite a lot of data, so you may want to try increasing the sleep time to 500 in there. It's running around 6.5Mb/s by default which isn't a problem for me as I have 100Mb nics, but it might be a bit much for a 10Mb LAN with other traffic on it... I'm going to upload the maps this afternoon, I'm sick of trying to get the loader to load some of these mangled files.

And of course on patch day if they patch the executable, it's going to be broken till the new offsets turn up


EDIT:
New Links:
http://alteria.sf.net/myseq-1.0.zip
http://alteria.sf.net/myseqserverc-1.0.zip
http://alteria.sf.net/seq-maps.zip

All these maps have been edited to fix errors and they all work as far as I know, the other 2 files haven't been updated since last night, just renamed so it's easier to track what versions of each people have... There's a couple of small changes coming later for the server to allow the update time to be changed.

eqtryin
04-06-2003, 03:07 PM
This is real nice work, so a small thanks before i ask you to support something you said you had no intention of :)

The only problem i have is the list just resetting over and over and basically never fully *decoding* the zone. Seems to happen in zones with a lot of different mobs anyhow great work. Using your latest download as well if that helps.

edit by different mobs i meant to say a lot of mobs say 200 or more, one for sure is the bazaar its will keep resetting the list everytime (this is just an example)

cavemanbob
04-06-2003, 03:26 PM
Yeah it's because mbos are removed from the list if not sent again from the server within a certain period, but if it comes in shortly after it gets added, then removed and so on... Increasing the Form1.ditchGone variable from 5 to 10 might help, but it'll tkae longer for stuff to disapear from the list. I have a better solution in the works that I'm currently testing.

Nocturo
04-06-2003, 03:43 PM
Thanks for your work. I've been having some problems getting it to work however, so I thought I'd post my information to help you nail down any bugs if you so choose.

First off, my system set up. I'm running Windows XP on both machines, and I have installed the .NET files from the above link on both computers. Both computers have 100mb nics. They are connected like this:

EQ Computer ---- Netgear Hub ---- Linksys Router ---- 'Client' Machine

I run the server, and it starts up as it should.



N
Waiting for new connection...


I run EQ, and start the client on the other machine. I set the IP address to the EQ machine, and I hit go. The title of the Client application changes from "MySeq - " to "0". No spawns appear and the map is not loaded.

The server recognizes the connection however, and the following information is displayed:



found - pid = 1348

new connection from: 192.168.0.3
Nexus Nexus


I get the same results if I run the client on the EQ machine and connect via 127.0.0.1. I have also recompiled the code with sleep changed to 500, and there was no difference for me.

Douglas
04-06-2003, 04:04 PM
A few messages up in this thread is a post with a link for .net framework 1.1 final beta, install that, it fixed the same problem you are having for me even though i am using windows xp with .net visual studio.

sauron
04-06-2003, 04:28 PM
The link ("http://alteria.sf.net/myseq.zip") Isn't working for me today. Just an FYI (Apr 6th, 5:28pm CDT)

steve
04-06-2003, 04:40 PM
Great work :)

The only problems I had was a repeated error about enumeration. I could click Continue and the program continued running fine though. And eventually the list goes crazy updating itself and keeps reloading it over and over. But I see you addressed that above already. :)

If you're taking ideas for features, I think a neat idea would be if you could point to a dot on the map with the mouse, and it would say what spawn it was... or let you right click on it to target it.

Amadeus
04-06-2003, 04:51 PM
ok ...yea, I'm a dumbass ;)

Hmm....perhaps if you wanted to set up a CVS for this on sourceforge we could start helping dev a little here and there. Ironically, I utterly suck at Linux GUI coding, but windows is a whole different matter *grin*.

I know you're not supporting and may stop developing at any time; however, even if you never touched it again, it would create a place as a 'hub' for those interested in this sort of thing. It is a great teaching tool for this type of program, imo.

Thanks!

cavemanbob
04-06-2003, 05:22 PM
I've fixed the list thing for good now I think and reworked the way that spawns are added and removed, and I'll upload it when I've got a couple more things done. I'll probably set up a CVS for it once I've got the basic functionality sorted out, I might get to it tomorrow.

The enumeration message is just annoying it doesn't seem to hurt anything, I've been trying to track it down but it's so sporatic that it's hard to nail down...

Nocturo
04-06-2003, 05:41 PM
Not sure if you were talking to me Douglas, but as I said...


Originally posted by Nocturo
...I have installed the .NET files from the above link on both computers. ..

Noob_Ogre
04-06-2003, 05:55 PM
I am a total noob. Is this as safe as SEQ for Linux?

*starts ducking flames*

cavemanbob
04-06-2003, 05:56 PM
Nocturo: Try telneting to port 5558 the machine the server is running on, if it dumps a bunch of garbage, the problem is with the client, if it doesn't the data's not getting from the server to the client, but this'll help narrow it down a bit anyway

seqcleric
04-06-2003, 06:04 PM
I guess i'm stupid :/

I've tried everything i can think of, but the only time i'm able to get the spawn list to populate is when i first log in and click go. After i zone, nothing else changes.

I've never gotten the mobs to show up on the maps either.

I've just installed the .net 1.1 beta as was suggested above but still am having zero luck. I have two 100 MB nic's on a good hub and bandwidth shouldn't be an issue.

The server and client are talking to each other, i've seen the server say it's gotten a connection, but after it lodas once, i never seem to get anything else.

Hope you can tell me what i'm doing wrong.
Thanks!
Seqcleric

Nurseling
04-06-2003, 06:19 PM
I have the same issue loads once but noithing after that and no gps it just kind of locks

cavemanbob
04-06-2003, 06:20 PM
Don't put too much thought into it yet, I've got one more little bug to track down and I'll upload a nice new version that'll hopefully fix some of these problems.

seqcleric
04-06-2003, 06:21 PM
You are too cool, waiting for the next version, hopefully will be ready tonight $ :)

Nocturo
04-06-2003, 06:57 PM
I telnet'd into 5558, and data is being sent. Must be something in the client, I'll take a look at it.

cavemanbob
04-06-2003, 07:05 PM
New version is up, both the client and server need to be updated as there has been a small protocol change. Maps have not changed.

http://alteria.sf.net/myseq-1.1.zip
http://alteria.sf.net/myseqserverc-1.1.zip
http://alteria.sf.net/seq-maps.zip

Server Changes:
* Can now supply a value in ms for the update rate on command line

Client Changes:
* Changed the way stuff is added to the listbox, hopefully this will fix some of the issues realting to that, let me know if they persist
* Added the ability to click on a dot on the map and it'll select the mob in the listbox, but not scroll down to it yet <- coming soon...

I'm going to try to squish some of these annoying bugs now, so let me know if it's acting up for you. If you have a copy of vs.net and can narrow down where it's happening that'd be awesome, otherwise just try to provide as much detail as possible.

Have Fun :)

seqcleric
04-06-2003, 07:51 PM
If anything, this will help narrow down your FAQ's and maybe get some stuff done so you won't have to adress it in the future.

Still no go with the new server and client, same troubles, so lets try some troubleshooting.

Which service pack are you running under Win2K? NOt sure if this would affect it or not, but lets be thorough.

Which version of .net are you running?

When are you executing the server and client. DO you execute the server and then load eq, or do it after eq is up, also, when do you execute the client.

Lastly, and this may be what my problem is, has anyone gotten the ready made Bin's to work or is it possible we need to compile them on our machines for our machines? I had trouble like this with maggot boy's sniffer. I used one a friend compiled, but no luck, but after i compiled my own, it worked awsomely.

could any of these be the trouble? :)

Sincerely,
Seqcleric

Nocturo
04-06-2003, 07:58 PM
I ran the client in the debugger, and finally found out what my problem was. I misunderstood when you said to put the maps in the client directory, and I put them in the same directory as the program, instead of in the maps subdir. It wasn't until I ran under the debugger that the error was shown. I put the maps in a maps subdir, and tada, works good.

Right clicking to select a mob is nice, but its hard to click right on the dot sometimes. I'd suggest finding the nearest dot to the click, and selecting that one. Shouldn't be too hard to code, and even with a large number of spawns I don't think it would slow it down terribly.

Thanks for the work!

seqcleric
04-06-2003, 08:10 PM
Noctoro,
what is your exact directory structure? I think this is what is causing the trouble.

Is it C:\maps\maps with the client running in the first maps dir and the maps in the second one?

Thanks man!
Seqcleric

cavemanbob
04-06-2003, 08:13 PM
OK, hopefully we can get some of this figured out soon

I'm running Win2K unpatched (might've come with SP1 alredy installed as it's a newer disc) on one machine and Win2K SP2 on the other, works on both.

.NET version = v1.0.3705

The server can be started at any time, I usually just leave mine running all the time, and doesn't search for EQ until the client connects. Although it *should* be OK to hit GO on the client anytime after the character select screen I've noticed that it tries to load a nonexistant map, so it's probably best to just wait until it's loaded fully.

It's a distinct possibility that compiling it on a different machine may help, I'm not really sure, but it's worth a try I've never tried distributing a c# app before. I'll toss .NET on my 98 machine tonight and maybe try it with my other network switch and see what happens.

EDIT: OK I'll increase the range that you can click near a dot, I figured it was a bit small

The directory structure for the client is just
c:\myseq for the exe, filters.conf and such
and c:\myseq\maps for the maps
The location of the server doesn't matter

seqcleric
04-06-2003, 08:16 PM
Ok everyone, i've figured out the problem. Hope this helps someone and I hope i'm not the only one that was too thick to understand it.

My setup is running like this:
Server, at 250 MS
Client is set up as follows:

I have a dir called maps in which I put all the stuff from the Myseq zip file into. I don't think you need anything but the myseq.exe file, but this works so i'm not fucking with it.

Within that first dir called maps, I made another dir called maps. In it, i copied all of the Seq maps into. Then, i executed myseq.exe from C:\maps.

I'm fairly sure you can create a dir called client and copy merely the myseq.exe file into and then within that client dir, you can make a dir called maps which will contain the seq maps.

Anyway, this is how I got it to work after pulling my hair out.

I'll test the client stuff now.

Thanks a ton for the work caveman, this looks like it's going to own.
Sincerely,
Seqcleric

Dark
04-06-2003, 08:29 PM
System
W2k SP3 on both machines.
.Net SP1 on both machines
Ran the 1st exe’s released and worked fine except for some maps (I’m not compiling)
On EQ machine c:\mseq
On 2nd machine C:\mseq\maps exe in the mseq dir maps in the maps dir
Got list of spawns and coloured dots as per SEQ. great Stuff

No problems at all

Will try the latest exe’s and maps tonight

cavemanbob
04-06-2003, 08:33 PM
Good to hear it's working, sorry about the confusion about the directory structure hehe. The new set of maps (ie not the ones right out of seq) should all work, I think I looked at all of them, but at the same time I wouldn't be suprised if I missed one...

seqcleric
04-06-2003, 09:07 PM
I believe the question many of us are wanting ask is:

Does this program read from packet encryption or does it read directly from memory?

In other words, will it ever break when SoE Fubar's the netcode?

You mentioned every time a new EQ game comes out, it'll be broken until the new memmory adresses are found. That's not hard to do, from what i've read? So if I am understanding what this program does, it reads from memory and all we'll have to do is recompile with the new memory adresses when a new eqgame comes out?

Correct me if i'm wrong, but I sincerely hope this is the case.

At any rate, major kudo's to you in this outstanding working beta. It does everything I need it to.
Thanks so much for your hard work and your ability to deal with my dumb questions.

Oh, one last thing,
Is there a way to make the memory part of the program super secret, like maggotboy's sniffer to where it won't be able to be detected from anywhere else? If this functionality could be added, this program would be as near perfect as anyone could want. I know networking and hardware very well, and could never even pretend to know anything about programing, but is it possible (with maggotboy's permission, of course) to utilize his sniffing and hook removing code to do the sniffing to make this undetectable?
Sincerely,
seqcleric

cavemanbob
04-06-2003, 09:16 PM
It reads directly from memory, so unless they want to start messing with restricting memory access all that's needed is the offsets when eqgame.exe is patched. I'll probably put the addresses in a file, so the only time a rebuild would be needed is if they change the data structure...

OF course the risk is there that they could detect the memory reads, but I'm very sure they aren't monitoring atm since I've been reading the spawn data 4 times a second for the past wek and a half.

seqcleric
04-06-2003, 10:07 PM
how hard is it for them to detect memory reads? :)
I've always wondered this and is it against the law for them to do that?

And, if they can detect memory reads, it's really super intensive to try to do that, and they'd never be able to monitor everyone's you think?

Seqcleric :)

cavemanbob
04-06-2003, 10:27 PM
I've seen many many arguments about detecting memory reads and although it's not especially difficult to do so IMHO it would likely cause too many false positives when something like a virus scanner scanned through. I doubt they'd bother, but as per usual they could and detecting memory reads is legal so if anyone's real concerned don't run this type of software right after an exe patch... personally I don't really care if they ban me :)

God's Backhand
04-06-2003, 10:49 PM
Works great, thanks for doing this (I guess. Sort of a mixed blessing since retards can use this now... hrm). Anyway, what would be nice is if the program could discern between invisible (ie traps, triggers, etc) and regular mobs. Sort of a pain in the ass to see there are 8 rhags up in ssra. Thanks, keep up the good work.

cavemanbob
04-06-2003, 10:56 PM
I suppose it could draw invis mobs differently, the information is already being sent to the client so i'll probably put it in tomorrow

seqcleric
04-06-2003, 11:07 PM
Another possible addition to the mob list is showing them holding things or not.

I imagine that's a pain in the ass, but possibly could be added.

Otherwise, I think it works OUTSTANDINGLY!

Great work,
Seqcleric

steve
04-06-2003, 11:34 PM
Thanks for the update to select a mob on the map.

Anyway to furthur the sorting of the mobs, besides the sorting option in the menu that sorts alphabetically? IE, click on the 'Level' tab, and it will sort ascending/descending.

The zoom factor can't seem to go below 0.10, and doesn't give you a full map view. Also, the mob races don't seem to match.. I was killing goblins in frontiermtns and they were listed as yeti's. Not sure if this was due to the sorting and that column not getting rearranged or not...

cavemanbob
04-06-2003, 11:40 PM
The zoom this is going to be fixed shortly, I'm not exactly sure how to sort by the other columns, but again that'll be fixed soon if I can, the race thing'll be a PITA to fix so i'm not sure when I'll fix that, but as for adding more data, as long as it's in the SPAWNINFO structure it's trivially easy task to display it (ie a couple of lines)

Tomorrow afternoon I'll put up a new version of the client that fixes the mobs being harder to select at high zoom levels and scrolls the list so you can actually see the mob you jsut picked.

BinaryConfusion
04-07-2003, 03:56 AM
First of all thanks caveman for all the hard work. For someone that said they are not going to support it you certainly have gone ahead and done so.


To the dev's I hope this doesnt' discourge you from fixing SEQ, when the time comes for you to do so. I love my SEQ. I think it would be an awful thing to see this take its place.

showeqgratefull
04-07-2003, 06:59 AM
Ok,

i am at work right now so , maybe someone could explain....

first i would like to say thanks for your
hard work..

now, i currently only have unix machines
at work, so i have not done anything with this yet, but i unzipped the binaries and see some executeable files, is there already a compiled version built in, that i can just run without compiling anything?

i also only have one pc at home, so i am assuming i would run the :

/myseq-1.0/myseq.exe
and the
/myseqserverc-1.0/myseqserverc.exe

on the same machine:

could someone please post a little README?



i am not very windows savvy, more of a unix
person...

Thanks


Showeqgratefull

PS: i have my contributing member logo.. woohoo

MarkJames
04-07-2003, 09:47 AM
this is what i did and it worked fine (except output from eq, as i dont have eq at work).
Winxp on this machine fully patched from windows update INC .NET framework from WINDOWS UPDATE.
installed the .net patch from the post a few pages back ( dont know if i needed too after installing the .net stuff from windows update but i did :)).
run the server app on my local machine.
make a dir called c:\myseq
make a dir called c:\myseq\maps
copy client files into c:\myseq directory
copy map files into c:\myseq\maps directory
edit the file called "server" in c:\myseq to state the IP Address of the pc that is running the server app, ie if its the same you can either put 127.0.0.1 or its actuall ip address.
run the client software and watch that cool box appear.
as i said it looks real nice and if it does what it says on the tin i will be chuffed to bits. MANY THANKS in anticipation for a cool app.

OgerSEQ
04-07-2003, 10:10 AM
When I start up the server and client, everything works fine initially; however, when i zone, the client crashes and gives an overflow error. I can get it working again by simply restarting the client and the server. Nothing too important to worry about if it's just me. I run WinME (evil, I know, and may be the source of the problem) on both the client and the server, and use the .NET version 1.1 that was linked earlier in this topic.

Overall I think this is a great program, but I will definitely go back to SEQ when it is fixed.

notsure
04-07-2003, 12:11 PM
disregard post found my problem everything works great. =)

cavemanbob
04-07-2003, 12:59 PM
New client version is ready and there's a number of small changes here...

http://alteria.sf.net/myseq-1.2.zip

Big Changes:
* The invis state, run speed, and spawn time are now in the listbox, though I think run speed doesn't quite work right
* Invis mobs are drawn as a gray dot, though this will likely change
* It should be way easier to click on mobs on the map now at high zoom levels
* The listbox can be sorted in either ascending or descending order simply by clicking on the column header
* Couple of annoying bugs eliminated, and probably something that I've forgot about...

Midnight
04-07-2003, 01:33 PM
has anyone taken the time to sift through the code to make sure this is legit? people are downloading the executables and running this without doing any kind of background work? no offense to caveman.. we appreciate your skillful hand, but making a windows non compile only app completely open to the public will not exactly allow sony to 'sit tight and watch it all happen'. if you continue to develop this app and make it as easy as it is to use, can we not see thousands and thousands of people beginning to use it within the month? seq was made to be difficult to install for a reason. and in a strange way, sony respects that.

and what do the seq devs have to say about all this?

Alfred
04-07-2003, 01:45 PM
I seem to recall a post from a notable person saying something like "let loose the dogs of war..."

;)

sauron
04-07-2003, 01:53 PM
Seems to me if Sony respected that, they wouldn't have implemented the encryption keys which forced a memory sniffer to be run on the Windows side. Now everything has changed, and it was inevitable that a windows client was created. Whether they realized it or not when the changes were made -- Sony has brought these Windows SEQs upon themselves. And as I see it, they have two choices... They either (try to) gather evidence of sniffers running on 1000s of PCs and do a mass banning, or they ignore it and keep their $25,000 (or much more) a month.

Hopefully the suits at Sony will want their "free" money, and will realize that these SEQ cheat programs are merely very fancy tracking devices. You can't *really* get that much advantage over other players by using it. You still die when that frog in PoS decides to slap you around. You still can't solo a Wanton Tronera as a Ranger or Warrior....

*disclaimer -- oh yeah I'm on the SEQ forums* Just my opinions -- not addressing, repling to, or flaming anyone in particular.

EDIT --> OH! And WOOT to Cavemanbob! This thing is just awesome! I hope you find the energy to keep improving it! =)

Chuin
04-07-2003, 01:58 PM
I myself will probably never use this program. I find it a little to risky. But my hats off to Caveman for writing this program and I think it will force Sony into a tight position.

It will be something to watch in the next few weeks as Sony decides what they will do to combat this. Will they start mass bannings or use some other method to break this product.

I am willing to accept a longer vacation from SEQ just to sit back and watch the sparks fly.

Chuin

eqtryin
04-07-2003, 02:16 PM
Working great and this will do until SEQ is fixed, just want to mention one addition that would be helpful and that is body type, that way you can tell if said mob is untargettable, event trigger etc.... :)

cavemanbob
04-07-2003, 02:29 PM
The source is pretty simple and straight forward, it'd be pretty difficult to hide much malicious code in there and you can of course always compile it yoursef. The .NET runtime comes with a free command line c# compiler, though I've never actually tried it myself.

I'm kind of curious if soe's going to do something to make memory reading more difficult, they definately could so I'd really recommend against running this right after an eqgame patch if you really care about getting banned. I'm looking into a lower level method for reading memory that would bypass such protections, but it's not done yet.

I'll look at the body type thing, but it should just be in the spawn info so it shouldn't be a problem

eqtryin
04-07-2003, 03:01 PM
Thankyou Caveman BoB

MarkJames
04-07-2003, 03:27 PM
Awesome proggy that works well, 2 questions if i may please,

How are alerts handled ? - beep, tune, flashing dot ....
how do alerts get read, ie i put holly windstalker in the list while she was up in Qeyrpg nothing happened, does the alert only trigger when they "pop".

thanks in advance

Mark

cavemanbob
04-07-2003, 03:36 PM
It should beep, but I forgot to uncomment the line before I zipped it up... It should be prefixing the name with *** so it zips to the top of the list, but last time I tested it I wasn't in a zone with anything on my alerts list so I'm not sure if it's working properly, Ill have a look at it a bit later.

don'tdoit
04-07-2003, 06:29 PM
OK, i went ahead and gave it a shot. Looks really promising. I have a small problem though, on w2k server the client crashes often. Ok, np, I threw the client on another w2k workstation and it runs fine. But there are no updates once I hit go. I get the initial update with map, mobs, etc, but nothing moves/updates unless I hit F2 on the client. Any ideas?

Zor
04-07-2003, 07:23 PM
When I hit "Go" I'll get a chunk of map, and maybe some mobs. Nothing ever happens in the list box. The map only updates when I resize the window. I was playing with Spy++, and it doesnt get many windows messages. I dont know if its supposed to or not, but I was expecting at least constant WM_PAINT or WM_TIMER events, or something. Nothing but mouse events just doesnt seem right...

Running XP Pro with all updates, with the latest .NET linked earlier

Hannibal
04-07-2003, 08:14 PM
Big Changes:
* The invis state

I think races are still incorrect, things that SHOULD be ' invisible ', like King Tormax's PH, are showing up as ' iksar '.

Actually, most ALL of the races are incorrect. I'm using server version 1.1.

cavemanbob
04-07-2003, 08:40 PM
The races are still wrong I'll look and see how showeq did it, probably won't get it fixed till tomorrow.

don'tdoit: That's odd, are you running the newest versions of the client and the server? It sounds almost like the client is missing the start and stop update packets... Will it update if you resize the window?

Zor: I'm not exactly sure what your problem is. There shouldn't be any timer events as the updates are handled by a separate thread and paint's are only done when a full set of packets are in and the end packet is received. As it updates on resizes I'd assume that it's missing that end packet from some reason. Again are you running the newest server version? If you have a copy of vs.net try starting the client in debug mode, I've found that .net has the rather annoying habit of discarding uncaught exceptions rather then terminating the application which I would much prefer. If anyone knows a way to change this behavior on a global level I would love to know how...

archmage
04-07-2003, 09:05 PM
Zor:
I had the same problem.. trying to setup it up without looking at any kind of instructions :)
Make sure you have the maps in the right location. On his latest client he made a blank MAPS folder in the same spot as the client. Make sure you put the maps in this folder and try it then.

Thank you thus far cavemanbob

-Archy

cavemanbob
04-07-2003, 09:19 PM
OK I decided to patch a couple of annoying things tonight, I fixed the stupid typos that were screwing the mobs up and they should now work correctly. Second I turned the beeps for alerts on (This should really be selectable somewhere...) Does anyone know a zone with some invis mobs/traps so I can check what their flags look like? I can't think of any offhand, though they're probably in zones i visit all the time hehe.

http://alteria.sf.net/myseq-1.2a.zip

The Mad Poet
04-07-2003, 09:29 PM
To handle uncaught exceptions..

try putting your entire program in a try catch...

easy to do - just put it in winmain before you call your main proggy..

Then make your catch just throw up whatever stuff it gets and exit the program gracefully.

*edit*

Here is an example:

//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
//---------------------------------------------------------------------------

cavemanbob
04-07-2003, 09:44 PM
Reuploaded, fixed a rather annoying bug that caused alerts to be set off when they shouldn't have...

Doh! I should have thought of the exception thing, ah well lol


http://alteria.sf.net/myseq-1.2a.zip

Nitro Joe
04-07-2003, 10:17 PM
Running Server Ver. 1.1 and Client Ver. 1.2a on a Win98 System.
Most times MySEQ crashes after build up the Mob-List and Viewing the Mobs in the map (approx. 2 sec. after hitting the "Go" Button).

Anybody have the same probs or know a clue to fix it?

Nurseling
04-07-2003, 10:43 PM
recheck that you have the latest update for the net framework.

worked for me !!!


Ow well not sure what the deal is it was working but to no avail
IT is locking again.

eqhunter
04-07-2003, 11:10 PM
can I use C++ to compile this?

pooz
04-07-2003, 11:41 PM
zones with invis mobs / traps...

The Grey
Dragon Necropolis
Chardok

cavemanbob
04-08-2003, 12:00 AM
The server's written in c so yeas a c++ compiler can build that, the client is written in c#, so it cannot. The .NET framework comes with a compiler that can be used.

Got anything that's set as the invisible man race drawn as a gray dot now to make them easier to pick out, this'll be in the next release.

Dark
04-08-2003, 12:05 AM
A request, well 2 really.

Can you make it so we can slide/move the bar between the map and spawn list?


A future addittion/wish.. Exp window, i found this really helpful in the old SEQ.

Keep up the great work.

cavemanbob
04-08-2003, 12:30 AM
Resizing like that is planned, first I'm fixing the scrolling and zooming. Exp window probably won't happen without some info about how to pull this data out of the client, if it's even possible that is.

Crap, I think the last version is broken and won't update the locations of the mobs. I already have a fix, but it's too late to upload it atm, so i'll put it up with some other fixes in the morning

MarkJames
04-08-2003, 01:52 AM
Its very easy with a lot of people saying this wont work and that wont work to get peed off and walk away, i would just like to say Thank you and WELL DONE CaveManBob for a grand piece of software, i really think with the current ui in eq that the only thing left that we really need is a spawn window and alert manager and i think thats just what you have created. thats all i really used ShowEQ for anyways for scouting and pulling on raids and checking for rare spawns as i move through a zone.

Things that i would like to see if at all possible and if any are easy to fix quickly :)

1. Choice of alert sound ie single wav file called alert.wav so i can still use my fav alert tune :).

2. ability to resize the mob list window and map, mob list is more important to me than the map for initial view.

user387
04-08-2003, 05:53 AM
just fyi, but the server code compiles under gcc without any problems...

// gcc -c myseqserverc.cpp
// gcc -o myseqserverc.exe myseqserverc.o -lth32 -lwsock32

Linux4e
04-08-2003, 06:31 AM
Extremely nice work, thank you CavemanBob.

Just got one "small" visual suggestion for the program. Maybe make an option of having more than one map window so you can use one for zooming in on your location, and another for overview? Generally something like this old picture of SINS http://sins.sourceforge.net/images/sins-lg.png

Again very nice work!

CoolGuyEQ
04-08-2003, 07:02 AM
CaveManBob,
Holler if you need a place to host your stuff. Can get you setup rather quick.

CGEQ

Sixes
04-08-2003, 07:06 AM
Originally posted by user387
[B]just fyi, but the server code compiles under gcc without any problems...

Hmm.... are you using gcc natively under Windows or are you running cygwin? I'm doing the latter and have not managed to get it to compile successfully. :mad:

user387
04-08-2003, 07:41 AM
native gcc...

why would I user cygwin?

Riser
04-08-2003, 07:53 AM
New patch with new eqgame.exe, need new offsets?

Gilson
04-08-2003, 08:42 AM
Stuck at work, so I can't try it out, so I'll just ask. Does this also show the position of other players? Or only mobs currently?

MarkJames
04-08-2003, 09:26 AM
players as well

Sixes
04-08-2003, 10:41 AM
Originally posted by user387
why would I user cygwin? Because it's a great environment for making Windows XP feel like it's a Linux box.

Could you give me a pointer to where to get the "native" version please? http://gcc.gnu.org/install/binaries.html seems to have various versions, all of which seem to be parts of larger projects.

Thanks.

Riser
04-08-2003, 11:14 AM
New patch seems have broke it, anyone have the new offset?

cavemanbob
04-08-2003, 11:37 AM
Yes, if anyone has the offsets let me know. The MQ people seem to have them, but they aren't posted anywhere... If anyone wants to set up a SF project or something to throw this stuff up on that'd be great, I don't really have time at the moment.

Good to hear that the server builds under gcc, has anyone tried doing a command line build of the client with csc yet?

At any rate, here's a quick list of features coming today and stuff that won't be done int the short term anyway.

Coming Soon:
* Stupid annoying zooming... <- this is already done, defaults to a view of the whole map, then zooms in like it should
* Scroll bars are gone. These were pissing me off last so I just use the offset boxes at the bottom for scrolling now, if someone else wants to deal with them feel free
* WAY less network usage, I'm hacking all the usless crap out of the SPAWNINFO stuff, this should drop the usage from ~6.6Mb/s to closer to 1Mb/s, o this may fix some problems.
* Customizable beeps with wav's, I like this idea, probably go in after teh major changes above
* Resizing the map and listbox with a slider between them. This should be easy.
* Some sort of alert manager, again a good idea, gotta get the major stuff done first though
* Putting the offsets in a file with the server.
* Cleanup of the codebase: There's lots of hidden exceptions tossing uncaught exceptions that the c# docs don't mention and some general ugliness that needs to be fixes
* Other map windows... again a good idea, but the map control needs to be cleaned up some first

Not coming soon:
* Exp window. I have no idea where this data would come from in the client, but if anyone can figure out how to pull only your kils out of the client great :)
* Guild management stuff, same as above


Most of the above changes are already in place, but I think I'll put the new netcode in place before anything is released because that stupid brute for hack's been pissing me off since I started this thing...

As a quick note the new netcode uses ~170KB/s (1.3Mb/s) in a zone with 500 mobs and 250ms update time uncompressed, which I am MUCH happier with :)

wizard
04-08-2003, 12:53 PM
Found this on the macroquest website for todays patch

[MacroQuest]
MacroQuestVersion=SRC-20030308
ClientName=eqgame
ClientVersion=Tue Apr 08 03:05:xx 2003
ClientOverride=0
MacroQuestWinClassName=__MacroQuestTray
MacroQuestWinName=MacroQuest

[Function Locations]
WriteChatColor=004DB0EB
GetRaceByID=004D09EE
GetClassByID=004D0399
GetDeityByID=004D1E90
LeftClick=0
RightClick=0
ScreenItem=0045C8B7
ScreenSpawn=004E4A41
NewUIINI=0044759C
MaxMana=00464CE8
Commands=004E3B79
CmdCleanup=0
MemChecker=004F3EEE

[DirectInput8]
Main=00772DDC
Keyboard=00772DE0
Mouse=00772DE4

[Memory Locations]
Zoning=00759B5C
Zones=00759B70
SpawnHeader=00759B74
Items=00759B78
Doors=00759B90
SpawnFooter=00759B9C
Char=00759BB0
CharInfo=00759BB8
Target=00759BBC
Guilds=0
Packs=0
Mouse=0
Attack=0
Spells=00767340
CommandList=005A7808
DoAbilityList=0073078C
DoAbilityAvailable=0072BA08
Group=006A9CF8
GroupCount=006A9BB0
HSliderItems=0
HSliderMoney=0
PackPanel1=0
PackPanel2=0
clsMain=0
clsItems=00759BE0
clsSpawns=00759B68
clsInvPanel=0
clsMerchantPanelStatus=0
clsMerchantItemBase=0
clsMerchantSelectedItem=0
clsMerchantSelectedSlotID=0
clsMainNewUI=00772F78
clsMainSpellRefresh=0
clsMainSpellMemId=0
clsMainSpellMemBar=0
clsMainSpellMemGem=0

EncryptPad=005C1A7C

eqtryin
04-08-2003, 12:57 PM
Caveman is there any chance on getting body types into this project or is that even possible? I know for sure The grey has multitudes of traps if your looking for a zone to test it in, its helpful to see the body type because many times the said mob is type untargettable, timer, trap, things like this. Again thanks for the dedication you are putting into this. :)

quackrabbit
04-08-2003, 01:23 PM
The offsets are:
const void *EQADDR_SHORTZONE = (void*)0x006F65D4;
const void *EQADDR_CHAR = (void*)0x00759BB0;
const void *EQADDR_SPAWNLIST = (void*)0x00759B74;
const void *EQADDR_TARGET = (void*)0x00759BBC;
const void *EQADDR_ZONING = (void*)0x00759B5C;

Edit: Found remaining offset

cavemanbob
04-08-2003, 02:31 PM
After having a first look at the offsets, they appear to be correct, but the SPAWNINFO structure may have been changed, which would be very annoying. I don't have time to work out the new structure until later, so if anyone wants to give it a shot, please do it would be greatly appreciated...

user387
04-08-2003, 02:52 PM
Originally posted by Sixes
Because it's a great environment for making Windows XP feel like it's a Linux box.


If I want linux, I'll boot linux.


Could you give me a pointer to where to get the "native" version please?

www.mingw.org
http://sourceforge.net/projects/dev-cpp/
http://www.bloodshed.net/devcpp.html

eiter one of those should work.

Qwerty123
04-08-2003, 07:24 PM
Mine is showing a window titled "Convert Error", in the box it says "File not found: ./maps/.map

Also , what are the correct "new" values for the config.ini file?

-Qwerty:confused:

Sixes
04-08-2003, 07:29 PM
Originally posted by user387
If I want linux, I'll boot linux.
Ah, but this way I can alt-tab from EQ into a bunch of xterms. :)

one of those should work.
Thanks. Will try them in the morning. It's much appreciated.

Paradigm
04-08-2003, 07:40 PM
First off I mest say bravo Cavemanbob!! This is beautiful!

Next, Wouldnt it be very possible to add some code into the linux version of seq so it could be used as the client?

fippy
04-08-2003, 08:09 PM
Originally posted by cavemanbob
Good to hear that the server builds under gcc, has anyone tried doing a command line build of the client with csc yet?

csc /out:myseq.exe /target:winexe Form1.cs Form3.cs Form4.cs MapCon.cs
compiled without any problems.

KeldramosRN
04-08-2003, 09:25 PM
Maybe I'm doing something wrong, but i cannot for the life of me get this thing to work... i've tried launching the server on the machine, connecting with the client on the other machine, then loading EQ... nothing (both machines winxp pro)... worked before todays patch... it just stares at me with a blank screen now... no zone name, nothing... i tried changing the offsets, or whatever. to no avail.

Any ideas?

Thanks

Dark
04-08-2003, 09:37 PM
Originally posted by KeldramosRN
... worked before todays patch...
Any ideas?

Thanks

I think you have the answer.

KeldramosRN
04-08-2003, 09:41 PM
I meant, as in, any idea how to make it work again

Riser
04-08-2003, 09:43 PM
New offsets didnt work? did they change something else?

KeldramosRN
04-08-2003, 09:55 PM
Not sure... any chance i can get someone who has this working to zip client/server up and post it here? id appreciate it greatly

Qwerty123
04-08-2003, 10:29 PM
I close my eyes and rub them real hard... when I open them, mine decodes. mmm..... sparkly

:)

eqhunter
04-08-2003, 10:29 PM
Was wondering if anyone ported the myseq1.1 to lunix. I have one windoows system anf redhat 8 would like to get my linux box working

:D :D :D :D :D :D :D :D

cavemanbob
04-08-2003, 10:30 PM
The spawn structure in EQ changed, I've got most of it done, but haven't had much time today to deal with it. Lyenu over at the LEQM project is supposed to have a fix up tonight and in that case I'll pull the new structure from there and stick it in the server, otherwise it's broken until then.

Uberchanter359
04-08-2003, 10:38 PM
I close my eyes and rub them real hard... when I open them, mine decodes. mmm..... sparkly



Bah i dont even have to rub my eyes. I just blink. =) Gotta love partitions, my linux box is actually a windows box in disguise. =) go go 2.4ghz npnp

trustno1
04-08-2003, 11:04 PM
Mine decodes just fine. I have to put my head down between my legs, take a deep breath, hold it, then stand up REAL fast. Lots of skittles, though they are all the same color and running crazy. After that I must get disconnected, everything goes black

[Nice work Caveman, very nice, and thanks! ]

showeqgratefull
04-09-2003, 07:29 AM
ok, just want tomake sure i have this right..
i take the offsets from the previous pages and put them in the config.ini file.. is that correct?

is there anything else i need to do?


Thank

Showeqgratefull

Gilson
04-09-2003, 07:36 AM
The offsets are correct, but the SPAWNINFO format is different, so it still won't work. Basically, it'll know exactly where the SPAWNINFO bits start, but won't know how to read them. Lyenu at LEQM was hoping to have a fix for it up last night, but I hadn't seen anything on it.

wizard
04-09-2003, 08:33 AM
hope this helps.

Charinfo: 0x00759bb8
CharacterSpawn: 0x00759bb0
SpawnLinkListTop: 0x00759b74
TargetSpawn: 0x00759bbc

Code:

typedef struct _SPAWNINFO {
BYTE Unk0[0x1c]; //0x00 - 0x1b
CHAR Name[0x1e]; //0x1c - 0x39
BYTE Unk1[0x2c]; //0x3a - 0x65
BYTE Type; //0x66
BYTE Class; //0x67
DWORD Race; //0x68 - 0x6b
BYTE Unk2; //0x6c
BYTE Level; //0x6d
BYTE Unk3[0x0e]; //0x6e - 0x7b
FLOAT Heading; //0x7c - 0x7f
FLOAT Y; //0x80 - 0x83
BYTE Unk4[0x08]; //0x84 - 0x8b
FLOAT Z; //0x8c - 0x8f
FLOAT X; //0x90 - 0x93
BYTE Unk5[0x18]; //0x94 - 0xab
DWORD SpawnID; //0xac - 0xaf
BYTE Unk6[0x3c]; //0xb0 - 0xeb
struct _SPAWNINFO *pNext; // 0xec

} SPAWNINFO, *PSPAWNINFO;

Lyenu X`Arie
04-09-2003, 09:54 AM
My struct is done if you want it...


typedef struct _SPAWNINFO {
/*000*/ BYTE Unknown000[28];
/*028*/ CHAR Name[64];
/*092*/ DWORD ZoneID;
/*096*/ BYTE Unknown096[6];
/*102*/ BYTE Type;
/*103*/ BYTE Class;
/*104*/ DWORD Race;
/*108*/ BYTE Unknown106;
/*109*/ BYTE Level;
/*110*/ BYTE Unknown108[14];
/*124*/ FLOAT Heading;
/*128*/ FLOAT Y;
/*132*/ BYTE Unknown132[8];
/*140*/ FLOAT Z;
/*144*/ FLOAT X;
/*148*/ BYTE Unknown148[24];
/*172*/ DWORD SpawnID;
/*176*/ BYTE Unknown176[60];
/*236*/ DWORD pNext;
} SPAWNINFO, *PSPAWNINFO;

cavemanbob
04-09-2003, 11:17 AM
Thanks, there's still a couple more hiding in there, but this'll save lots of time finding them. :)

slartibartfast
04-09-2003, 12:41 PM
Unknown176(48) looks like its the VisType from your previous structure, so my revised structure looks like this:

typedef struct _SPAWNINFO {
/*000*/ BYTE Unknown000[28];
/*028*/ CHAR Name[64];
/*092*/ DWORD ZoneID;
/*096*/ BYTE Unknown096[6];
/*102*/ BYTE Type;
/*103*/ BYTE Class;
/*104*/ DWORD Race;
/*108*/ BYTE Unknown106;
/*109*/ BYTE Level;
/*110*/ BYTE Unknown108[14];
/*124*/ FLOAT Heading;
/*128*/ FLOAT Y;
/*132*/ BYTE Unknown132[8];
/*140*/ FLOAT Z;
/*144*/ FLOAT X;
/*148*/ BYTE Unknown148[24];
/*172*/ DWORD SpawnID;
/*176*/ BYTE Unknown176[48];
/*224*/ BYTE VisType ;
/*225*/ BYTE Unknown225[11];
/*236*/ DWORD pNext;
} SPAWNINFO, *PSPAWNINFO;

cbreaker
04-09-2003, 01:00 PM
Originally posted by user387


www.mingw.org
http://sourceforge.net/projects/dev-cpp/
http://www.bloodshed.net/devcpp.html

eiter one of those should work.

When using mingw, latest version, I can't compile the server:


C:\server>gcc -c myseqserverc.cpp

In file included from myseqserverc.cpp:4:
stdafx.h:6:9: warning: #pragma once is obsolete


This in itself I figure is okay, but then I try to make the executable:


C:\server>gcc -o myseqserverc.exe myseqserverc.o -lth32 -lwsock32

myseqserverc.o(.eh_frame+0x11):myseqserverc.cpp: undefined reference to `__gxx_personality_v0'


Any ideas? I know that the thing isn't working right now but it will, and I'd like to be able to get it compiled.

What are my other options for getting this thing compiled besides MinGW?

cbreaker
04-09-2003, 01:04 PM
Okay well I actually used VC++ .NET Studio, and it seemed to build okay.

I got these errors:

myseqserverc.cpp(258) : warning C4312: 'type cast' : conversion from 'int' to 'void *' of greater size
myseqserverc.cpp(270) : warning C4312: 'type cast' : conversion from 'int' to 'void *' of greater size
myseqserverc.cpp(296) : warning C4312: 'type cast' : conversion from 'int' to 'void *' of greater size
myseqserverc.cpp(300) : warning C4312: 'type cast' : conversion from 'DWORD' to 'void *' of greater size

But I seem to be in good shape.

I'd still like to be able to use gcc/MinGW though.

cavemanbob
04-09-2003, 01:06 PM
New version, most of the functionality is restored, there's still a couple of missing offsets, but i'll dig them out later. Both the server and the client need to updated. There should be much less network usage now, though there's still room for improvement, zooming is also handled more logical manner.

The stupid pragma once thing is in a stupid and useless auto generated file, I'll take those out for the next version.

I'll fix those warnings, they've been annoying me for a while, but they don't hurt anything.

http://alteria.sf.net/myseq-1.3.zip
http://alteria.sf.net/myseqserverc-1.2.zip
http://alteria.sf.net/seq-maps.zip

z26o
04-09-2003, 01:19 PM
Has anyone had the chance to look at the new eqgame.exe code to see if they are looking for sniffers? Just wondering...

Thanks cavemanbob for a sweet app, and the updates.


~ z

cavemanbob
04-09-2003, 01:23 PM
Haven't check if it's checkingfor sniffers, but I was reading memory across most of the EQ memory space for a while yesterday and about 3 hours today, so I'd say they're probably not yet...

At any rate found a stupid bug in the server that was causing the map to not load on the client so if you got the server before I posted this and are having trouble, try redownloading it

kaos057
04-09-2003, 04:16 PM
got myseq working but when i start the server it just sits there looking for a connection. do i need to manually change the offsets or something?

cavemanbob
04-09-2003, 05:08 PM
Make sure the server IP address is set correctly in the client, if that doesnt work telnet to port 5558 on the server machine and see if it spits out a bunch of garbage. That'll narrow down where the problem is. The offsets are now stored in a file in the same directory as the server executable, if it doesn't exist it creates it and fills it with the currently valid offsets.

z26o
04-09-2003, 05:56 PM
at the risk of being obvious don't forget to push the "go" button after you put in the server address.

sometimes it's the little things ya know? :confused:

Manaweaver
04-09-2003, 06:33 PM
Very nicely done mate. I was a bit hesitant at first, due to the fact I was so confortable with SEQ... It took about 3 - 5 minutes of messing around to get it to work properly. It just seems to be a bit touchy with when you try and look for EQgame.exe(IE, when you click the "Go" button). The map, as far as I can tell, doesn't zoom out all the way. Not a big deal of course(Maybe I'm just stupid ;) )

cavemanbob
04-09-2003, 06:46 PM
I'll hack something up to make the zooming better later tonight, I've also put in a column in the box to show the mob type which should make it easier to find traps and such that'll be in the next update.

kaos057
04-09-2003, 07:05 PM
when i telnet to that port, i get a bunch of garbage and happened to see my characters surname in there somewhere so i know its from EQ, also the server screen says it gets a connection and all. I guess it is narrowed down to putting the right ip address in the client. I tried the ip address that i got off an internet site telling what your ip address is but when i click go a popup comes up saying the target machine refused connection. Am I using the wrong IP address? if so where do i get it from?

geEQ
04-09-2003, 07:12 PM
In Win98 you can get your IP info by running winipcfg. If you are using an NT variant, you will need to open a cmd window and run ipconfig.

One issue I noticed was I was able to run a client from the same OS (Win98). But if my client was XP and server was on 98, I could not see any info. I'll do a little more testing to see what is up.

kaos057
04-09-2003, 07:28 PM
That worked. Looks great only thing now is when I zone the map doesnt change and i have to restart both server and client. Not really that big a deal but if theres is something I can do to fix this please tell. Awesome job Cavemanbob, keep up the great work.

cavemanbob
04-09-2003, 07:38 PM
I'll look at the zoning thing, I had a very limited time to test the changes earlier so something probably got broken. I haven't done any testing on win98 yet, I'll give it a try if I have time later tonight.

Uberchanter359
04-09-2003, 07:48 PM
What could cause this? Tried installing it on my 3rd windows comp. Wanted to run both server and client on same machine and just set IP to 127.0.0.1 Changed offsets, downloaded newest version... Load the server, then the client. But when im in game and hit go....nothing happens. I get a "Connection from 127.0.0.1" message on the server...and when i telnet to that port i get the garbage n such. Just that the client isnt showing any info. Any ideas?

geEQ
04-09-2003, 08:01 PM
This is just a follow up to my last post. I was actually able to get skittles on my winxp box (win98 running the server) after I telnet'ed in and saw some weird stuff. Guess it just wiggled the wire a little. Hehe.

One thing I noticed was it certainly doesn't like multiple clients. I had my win98 client still going when I tried my Xp box. The 98 client died and I had to restart the server.

Just an observation, but it seems like I have to restart the server anytime I connect from a different client.

hai_hai
04-09-2003, 08:24 PM
Thanks for pushing out this app. A few things I noticed on the latest release, maybe I did something wrong but figured I would point out anyhow.

#Stupid Note : I loaded the server on EQbox and then loaded the client and input the IP address of the server. I clicked GO (without EQ loaded) and got an error saying

"File not Found: ./maps/LLLLLLLLLLLLLLLLLLLLLLL.map"

After going back over and over on my map locations and playing around. I just restarted the server, and client then ran EQ. Once in the game I clicked on GO ..and Viola ..I had map and spawn.

============================================

(1)

My first round I zoned and the client did not update new zone map nor mob info. Had to stop server, start server and stop client and start client to get it working again.

============================================

(2)

The Zoom and Pan features of the Map kept popping errors, all over the place when I was moving around looking at things. I was however to click CONTINUE and it resumed working.


=============================================



Done.


Thanks for your work on this program.


PS -

I am running in WinXP on both Boxes.

cavemanbob
04-09-2003, 09:44 PM
The LLLLLL... map thing is indicative of the server missing sending a packet, I've only had it happen very rarely, but it's part of a design problem in the server where if a memory offset can't be read for some reason it just skips it and keeps going often leading to odd results. The server isn't exactly the best example of good network design at the moment...

Multiple clients on one server won't work at the moment due to the design of the server.

Zoning thing I know about and will look into shortly.

Zoom & Pan will be looked at and probably replaced soon.

I have had problems using the 127.0.0.1 address, windows may not be using this address as I expect it to. I'll likely get the client to do a DNS lookup on the address instead in the near future, in which case localhost will work better.

Uberchanter359
04-09-2003, 09:47 PM
NP everything else is working awesomly. Thanks for all the work =) keep it up Cave

eqtryin
04-09-2003, 10:40 PM
This is one sweet program, and last time imma pester ya about it caveman but would really love to get "body type" included in this when you get the chance. Its important in many ways because you might see and this is hypothetical a mob called say King tormax but by body type he is an event trigger or invisible or a placeholder or a trap and not the real King tormax ...so you can see how it can be quite usefull. If you can implement it cool if not im not gonna complain one bit.

cavemanbob
04-09-2003, 10:48 PM
It's already in and waiting for release :) I'll either put the new version up late tonight or tomorrow morning.

I'll probably throw this project into cvs.alteria.sf.net tomorrow as myseq and myseqsever for some temp cvs hosting. I'll post more details when it's done.
More solid hosting is on the way as well.

Riser
04-09-2003, 11:21 PM
Any way to make the mouse wheel zoom in/out on your character or perhaps a way to select wether to zoom in on your character or zoom in on the mob you selected?

cavemanbob
04-10-2003, 12:02 AM
Riser: Probably on both suggestions, the mouse wheel being the most likely to get done first because it's a very good idea to do that when the map control is active.

As a super helpful thing with bug reports that I just thought of, if it pops up an error box that has a Details button in the corner please press it and copy the supplied text in there and paste it into the message, it will help a lot in tracking the bug down.

cbreaker
04-10-2003, 03:02 AM
While you're taking suggestions...

Would be nice to have the option of select mob on target (in game target, or con perhaps), if possible.

Would also be nice to be able to click a mob on the map, and have that mob be selected in the list.

Other then that, I'm very happy with this, excellent progress so far. I've had no problems, running server/game on XP and client on Windows 2000.

Megaton
04-10-2003, 03:57 AM
Does anyone have any screenshots of myseq running that they won't mind sharing?

KeldramosRN
04-10-2003, 04:06 AM
Just a quick question (P.S. Great work!)

While scrolling through the list, i often see characters with *** before their names... Not NPCs, but normal PCs... I can refresh the list, Close client/server and restart, and they still have the *** in front of them.. why?

Even their Corpses have *** in front of them....


Thanks

grimjack
04-10-2003, 05:29 AM
Here is a modification I did to add a font dialog and menu item for listbox1.
Maybe somthing that could be incorperated to the main source.
Sorry that it is so long I did not have anywhere to hoste the file.

I only was able to test it without running EQ since I am at work. Let me know what you think.

form1.cs


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Net;
using System.Net.Sockets;
using System.Globalization;
using System.Text;
using System.IO;
using System.Threading;

//using MapCon;

namespace myseq {
[StructLayout(LayoutKind.Sequential, Pack=1)]
public class SPAWNINFO {
public SPAWNINFO() {

}


public void frombytes(byte []b) {
Name = Encoding.ASCII.GetString(b, 0, 30);
Y = BitConverter.ToSingle(b, 32);
X = BitConverter.ToSingle(b, 36);
Z = BitConverter.ToSingle(b, 40);
Heading = BitConverter.ToSingle(b, 44);
SpeedRun = BitConverter.ToSingle(b, 48);
SpawnID = BitConverter.ToUInt32(b, 52);
GuildID = BitConverter.ToInt16(b, 56);
Type = b[58];
Class = b[59];
Race = BitConverter.ToUInt32(b, 60);
Level = b[64];
Hide = b[65];
Light = b[66];
VisType = b[67];
Lastname = Encoding.ASCII.GetString(b, 68, 22);

Deity = BitConverter.ToInt16(b, 90);
flags = BitConverter.ToInt32(b, 92);
}

public string Name = "";
public float Y = 0;
public float X = 0;
public float Z = 0;
public float Heading = 0;
public float SpeedRun = 0;
public uint SpawnID = 0;
public short GuildID = 0;
public byte Type = 0;
public byte Class = 0;
public uint Race = 0;
public byte Gender = 0;
public byte Level = 0;
public byte Hide;
public byte Light = 0;
public byte VisType = 0;
public string Lastname = "";
public short Deity = 0;
public int gone = 0;
public int flags = 0;
public ListViewItem lvi = null;
}

[Serializable]
public class ListBoxComparer : IComparer {
//public ObjectComparer(params string[] fields) : this(fields, new bool[fields.Length]) {}

public int Compare(object a, object b) {
ListViewItem sa = (ListViewItem)a;
ListViewItem sb = (ListViewItem)b;
int res = 0;

// Name
if (Column == 0) {
res = string.Compare(sa.Text,sb.Text);
}
// Level
else if (Column == 1) {
int ia = int.Parse(sa.SubItems[1].Text);
int ib = int.Parse(sb.SubItems[1].Text);

if (ia < ib)
res = -1;
else if (ia > ib)
res = 1;
else
res = 0;

}
// Class
else if (Column == 2) {
res = string.Compare(sa.SubItems[2].Text, sb.SubItems[2].Text);
}
// Race
else if (Column == 3) {
res = string.Compare(sa.SubItems[3].Text, sb.SubItems[3].Text);
}
// Last Name
else if (Column == 4) {
res = string.Compare(sa.SubItems[4].Text, sb.SubItems[4].Text);
}
// Invis
else if (Column == 5) {
res = string.Compare(sa.SubItems[5].Text, sb.SubItems[5].Text);
}
// Run Speed
else if (Column == 6) {
float fa = float.Parse(sa.SubItems[6].Text);
float fb = float.Parse(sb.SubItems[6].Text);

if (fa < fb)
res = -1;
else if (fa > fb)
res = 1;
else
res = 0;

}
// SpawnID
else if (Column == 7) {
int ia = int.Parse(sa.SubItems[7].Text);
int ib = int.Parse(sb.SubItems[7].Text);

if (ia < ib)
res = -1;
else if (ia > ib)
res = 1;
else
res = 0;

}
else if (Column == 8) {
DateTime dta = DateTime.Parse(sa.SubItems[8].Text);
DateTime dtb = DateTime.Parse(sb.SubItems[8].Text);

res = DateTime.Compare(dta, dtb);
}


if (Descending)
res = -res;
return res;
}

public ListBoxComparer(ListView.ListViewItemCollection spawns, bool descending, int column) {
Spawns = spawns;
Descending = descending;
Column = column;
}

private ListView.ListViewItemCollection Spawns;
private bool Descending;
private int Column;
}


/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form {
[DllImport("kernel32.dll", ExactSpelling=true)]
internal static extern bool Beep(uint freq, uint dur);

const int ditchGone = 4; // The number of ticks till the spawn gets ditched

private System.Windows.Forms.Button button1;
private System.ComponentModel.IContainer components;
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
private System.Windows.Forms.MenuItem menuItem3;
private System.Windows.Forms.MenuItem menuItem4;
private System.Windows.Forms.OpenFileDialog openFileDialog;
private myseq.MapCon mapCon1;
private System.Windows.Forms.NumericUpDown offsetx;
private System.Windows.Forms.NumericUpDown offsety;
public System.Windows.Forms.NumericUpDown scale;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.MenuItem menuItem5;
private System.Windows.Forms.MenuItem menuItem6;
public System.Windows.Forms.ListView listBox1;
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.MenuItem menuItem8;
private System.Windows.Forms.MenuItem menuItem9;
private System.Windows.Forms.MenuItem menuItem10;
private System.Windows.Forms.MenuItem menuItem11;
private System.Windows.Forms.Label label1;


public TcpClient tcpc = null;
public NetworkStream s = null;
public Thread myWorkerThread = null;
public object mutex = new object();
public ArrayList alerts = new ArrayList();
public bool test = false;
public string addr = "127.0.0.1";
public string curZone = "";
public int curColumn = 0;
public bool curDescend = false;
private System.Windows.Forms.FontDialog fontDialog1;
private System.Windows.Forms.MenuItem menuItem7;
public float rawScale = 1.0f;

//public ArrayList spawns = new ArrayList();

public Form1() {
//
// Required for Windows Form Designer support
//
InitializeComponent();


loadIP();

offsetx.Minimum = -100000;
offsetx.Maximum = 100000;
offsety.Minimum = -100000;
offsety.Maximum = 100000;


scale.Minimum = 100;
scale.Maximum = 10000;
scale.Value = 100;
//scale.DecimalPlaces = 0;

scale.Increment = 10;
offsetx.Increment = 20;
offsety.Increment = 20;


listBox1.View = View.Details;

listBox1.AllowColumnReorder = true;
listBox1.FullRowSelect = true;
listBox1.GridLines = true;
listBox1.MultiSelect = false;


listBox1.Columns.Add("Name", 125, HorizontalAlignment.Left);
listBox1.Columns.Add("Level", 40, HorizontalAlignment.Left);
listBox1.Columns.Add("Class", 50, HorizontalAlignment.Left);
listBox1.Columns.Add("Race", 50, HorizontalAlignment.Left);
listBox1.Columns.Add("Last Name", 75, HorizontalAlignment.Left);
listBox1.Columns.Add("Invis", 50, HorizontalAlignment.Left);
listBox1.Columns.Add("Run Speed", 75, HorizontalAlignment.Left);
listBox1.Columns.Add("SpawnID", 50, HorizontalAlignment.Left);
listBox1.Columns.Add("Spawn Time", 100, HorizontalAlignment.Left);
lock(mapCon1.mobs)
mapCon1.mobs.Clear();
lock(listBox1)
listBox1.Items.Clear();

listBox1.ListViewItemSorter = new ListBoxComparer(listBox1.Items, false, 0);

loadAlerts("filters.conf");
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing ) {

if( disposing ) {
if (components != null) {
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.button1 = new System.Windows.Forms.Button();
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.menuItem3 = new System.Windows.Forms.MenuItem();
this.menuItem4 = new System.Windows.Forms.MenuItem();
this.menuItem5 = new System.Windows.Forms.MenuItem();
this.menuItem8 = new System.Windows.Forms.MenuItem();
this.menuItem9 = new System.Windows.Forms.MenuItem();
this.menuItem6 = new System.Windows.Forms.MenuItem();
this.menuItem10 = new System.Windows.Forms.MenuItem();
this.menuItem11 = new System.Windows.Forms.MenuItem();
this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
this.mapCon1 = new myseq.MapCon();
this.offsetx = new System.Windows.Forms.NumericUpDown();
this.offsety = new System.Windows.Forms.NumericUpDown();
this.scale = new System.Windows.Forms.NumericUpDown();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.listBox1 = new System.Windows.Forms.ListView();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.fontDialog1 = new System.Windows.Forms.FontDialog();
this.menuItem7 = new System.Windows.Forms.MenuItem();
((System.ComponentModel.ISupportInitialize)(this.o ffsetx)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.o ffsety)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.s cale)).BeginInit();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(8, 416);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "GO";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// mainMenu1
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1,
this.menuItem4,
this.menuItem9});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem2,
this.menuItem3});
this.menuItem1.Text = "&File";
//
// menuItem2
//
this.menuItem2.Index = 0;
this.menuItem2.Text = "Open &Map";
this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click);
//
// menuItem3
//
this.menuItem3.Index = 1;
this.menuItem3.Text = "E&xit";
this.menuItem3.Click += new System.EventHandler(this.menuItem3_Click);
//
// menuItem4
//
this.menuItem4.Index = 1;
this.menuItem4.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem5,
this.menuItem8,
this.menuItem7});
this.menuItem4.Text = "&Options";
//
// menuItem5
//
this.menuItem5.Index = 0;
this.menuItem5.Text = "Server Address";
this.menuItem5.Click += new System.EventHandler(this.menuItem5_Click);
//
// menuItem8
//
this.menuItem8.Index = 1;
this.menuItem8.Shortcut = System.Windows.Forms.Shortcut.F2;
this.menuItem8.Text = "Reset Mobs";
this.menuItem8.Click += new System.EventHandler(this.menuItem8_Click);
//
// menuItem9
//
this.menuItem9.Index = 2;
this.menuItem9.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem6,
this.menuItem10,
this.menuItem11});
this.menuItem9.Text = "&Alerts";
//
// menuItem6
//
this.menuItem6.Index = 0;
this.menuItem6.Text = "Reload Alerts";
this.menuItem6.Click += new System.EventHandler(this.menuItem6_Click);
//
// menuItem10
//
this.menuItem10.Index = 1;
this.menuItem10.Text = "&Add Alert";
this.menuItem10.Click += new System.EventHandler(this.menuItem10_Click);
//
// menuItem11
//
this.menuItem11.Index = 2;
this.menuItem11.Text = "&Save Alerts";
this.menuItem11.Click += new System.EventHandler(this.menuItem11_Click);
//
// mapCon1
//
this.mapCon1.AutoScroll = true;
this.mapCon1.BackColor = System.Drawing.SystemColors.Control;
this.mapCon1.Location = new System.Drawing.Point(272, 0);
this.mapCon1.Name = "mapCon1";
this.mapCon1.Size = new System.Drawing.Size(544, 392);
this.mapCon1.TabIndex = 3;
this.mapCon1.Load += new System.EventHandler(this.mapCon1_Load);
//
// offsetx
//
this.offsetx.Location = new System.Drawing.Point(144, 416);
this.offsetx.Name = "offsetx";
this.offsetx.Size = new System.Drawing.Size(56, 20);
this.offsetx.TabIndex = 12;
this.offsetx.ValueChanged += new System.EventHandler(this.offsetx_ValueChanged);
//
// offsety
//
this.offsety.Location = new System.Drawing.Point(264, 416);
this.offsety.Name = "offsety";
this.offsety.Size = new System.Drawing.Size(56, 20);
this.offsety.TabIndex = 11;
this.offsety.ValueChanged += new System.EventHandler(this.offsety_ValueChanged);
//
// scale
//
this.scale.Location = new System.Drawing.Point(376, 416);
this.scale.Name = "scale";
this.scale.Size = new System.Drawing.Size(48, 20);
this.scale.TabIndex = 10;
this.scale.Value = new System.Decimal(new int[] {
1,
0,
0,
0});
this.scale.ValueChanged += new System.EventHandler(this.scale_ValueChanged);
//
// label3
//
this.label3.ForeColor = System.Drawing.Color.White;
this.label3.Location = new System.Drawing.Point(336, 416);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(56, 16);
this.label3.TabIndex = 9;
this.label3.Text = "Scale";
//
// label2
//
this.label2.ForeColor = System.Drawing.Color.White;
this.label2.Location = new System.Drawing.Point(216, 416);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(48, 16);
this.label2.TabIndex = 8;
this.label2.Text = "Offset Y";
//
// label1
//
this.label1.ForeColor = System.Drawing.Color.White;
this.label1.Location = new System.Drawing.Point(96, 416);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(48, 16);
this.label1.TabIndex = 7;
this.label1.Text = "Offset X";
//
// listBox1
//
this.listBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.listBox1.FullRowSelect = true;
this.listBox1.GridLines = true;
this.listBox1.HideSelection = false;
this.listBox1.Location = new System.Drawing.Point(8, 0);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(256, 392);
this.listBox1.TabIndex = 15;
this.listBox1.View = System.Windows.Forms.View.Details;
this.listBox1.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this. listBox1_ColumnClick);
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexCha nged);
//
// timer1
//
this.timer1.Tick += new System.EventHandler(this.timer1_Tick_1);
//
// fontDialog1
//
this.fontDialog1.Apply += new System.EventHandler(this.fontDialog1_Apply);
//
// menuItem7
//
this.menuItem7.Index = 2;
this.menuItem7.Text = "List font";
this.menuItem7.Click += new System.EventHandler(this.menuItem7_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(832, 441);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.listBox1,
this.offsetx,
this.offsety,
this.scale,
this.label3,
this.label2,
this.label1,
this.mapCon1,
this.button1});
this.Menu = this.mainMenu1;
this.Name = "Form1";
this.Text = "MyShowEQ - ";
this.Resize += new System.EventHandler(this.Form1_Resize);
this.Load += new System.EventHandler(this.Form1_Load);
this.Closed += new System.EventHandler(this.form_Closing);
((System.ComponentModel.ISupportInitialize)(this.o ffsetx)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.o ffsety)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.s cale)).EndInit();
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main() {
try {
Application.Run(new Form1());
}
catch {
MessageBox.Show("Uncaught exception...\n");
Application.Exit();
}
}

private void form_Closing(object sender, System.EventArgs e) {
if (myWorkerThread != null)
myWorkerThread.Abort();
}


private void button1_Click(object sender, System.EventArgs e) {
//Byte[] read = new Byte[366];

if (button1.Text == "GO") {
// Try to connect to the server
IPAddress ip = IPAddress.Parse(addr);
tcpc = new TcpClient();
tcpc.Connect(ip, 5558);


// Get the stream
try {
s = tcpc.GetStream();
} catch (InvalidOperationException) {
Console.WriteLine("Cannot connect to server: ");
return;
}

//button1.Enabled = false;

ThreadStart myThreadStart = new ThreadStart(this.NetThread);
myWorkerThread = new Thread(myThreadStart);

myWorkerThread.Start();
button1.Text = "Stop";
}
else {
myWorkerThread.Abort();

s.Close();
tcpc.Close();

mapCon1.mobs.Clear();
listBox1.Items.Clear();

button1.Text = "GO";
}

}

public void loadIP() {
// Load the alerts
StreamReader sw;
try {
sw = new StreamReader(File.Open("server", FileMode.Open));
}
catch (System.IO.FileNotFoundException) {
Console.WriteLine("File not found");
return ;
}
catch (System.Exception) {
Console.WriteLine("Unknown exception caught while opening source file");
return ;
}

addr = sw.ReadLine();
sw.Close();
}

public void saveIP() {
// Now write the data to the new file
StreamWriter sw;

try {
sw = new StreamWriter(File.Open("server", FileMode.Create));
}
catch (System.IO.FileNotFoundException) {
MessageBox.Show("File not found", "Convert Error");
return;
}
catch (System.Exception) {
MessageBox.Show("Unknown exception caught while opening source file", "Convert error");
return;
}

sw.WriteLine(addr);

sw.Close();
}

public void saveAlerts(string filename) {
// Load the alerts
StreamWriter sw;
try {
sw = new StreamWriter(File.Open(filename, FileMode.Create));
}
catch (System.IO.FileNotFoundException) {
Console.WriteLine("File not found");
return ;
}
catch (System.Exception) {
Console.WriteLine("Unknown exception caught while opening source file");
return ;
}

foreach (string s in alerts) {
sw.WriteLine(s);
}

sw.Close();

}

public void loadAlerts(string filename) {
alerts.Clear();

// Load the alerts
StreamReader sw;
try {
sw = new StreamReader(File.Open(filename, FileMode.Open));
}
catch (System.IO.FileNotFoundException) {
Console.WriteLine("File not found");
return ;
}
catch (System.Exception) {
Console.WriteLine("Unknown exception caught while opening source file");
return ;
}

string inp = "";
while ((inp = sw.ReadLine()) != null) {
alerts.Add(inp);
}
sw.Close();

}

public bool isSubstring(string a, string b) {
int c;

for (c = 0; c < a.Length-b.Length; c++) {
if (string.Compare(a, c, b, 0, b.Length, true) == 0)
return true;
}

return false;
}

public void loadmap(string filename) {
if (!mapCon1.loadMap(filename)) {
string error = "Error loading map file: ";
error += filename;
MessageBox.Show(error, "Error");
}
this.Text = "MyShowEQ - " + mapCon1.longname;


lock(mapCon1.mobs)
mapCon1.mobs.Clear();
lock(listBox1)
listBox1.Items.Clear();

scale.Value = 100M;
}

private void menuItem3_Click(object sender, System.EventArgs e) {
Application.Exit();
}

private void menuItem2_Click(object sender, System.EventArgs e) {
openFileDialog.Filter = "Map Files (*.map)|*.map|All Files (*.*)|(*.*)";

if (openFileDialog.ShowDialog() == DialogResult.OK) { // Show the standard open file dialog
string filename = openFileDialog.FileName;
loadmap(filename);
}
}


private void offsetx_ValueChanged(object sender, System.EventArgs e) {
mapCon1.offsetxg = -(int)offsetx.Value;
mapCon1.Invalidate();
}

private void offsety_ValueChanged(object sender, System.EventArgs e) {
mapCon1.offsetyg = -(int)offsety.Value;
mapCon1.Invalidate();
}

private void scale_ValueChanged(object sender, System.EventArgs e) {
mapCon1.scale = (float)(scale.Value)/100.0f;

int midx = (int)((mapCon1.maxx+mapCon1.minx)/2);
int midy = (int)((mapCon1.maxy+mapCon1.miny)/2);

//mapCon1.offsetx = (int)((mapCon1.Width/2)-(midx*(mapCon1.rawscale*mapCon1.scale)));
//mapCon1.offsety = (int)((mapCon1.Height/2)-(midy*(mapCon1.rawscale*mapCon1.scale)));

mapCon1.Invalidate();
}

private void Form1_Resize(object sender, EventArgs e) {
Size s = mapCon1.Size;
Size t = Size;

s.Width = t.Width-296;
s.Height = t.Height-96;
mapCon1.Size = s;

Point v = offsetx.Location;
v.Y = Size.Height-72;
offsetx.Location = v;

v = offsety.Location;
v.Y = Size.Height-72;
offsety.Location = v;

v = scale.Location;
v.Y = Size.Height-72;
scale.Location = v;

v = label1.Location;
v.Y = Size.Height-72;
label1.Location = v;

v = label2.Location;
v.Y = Size.Height-72;
label2.Location = v;

v = label3.Location;
v.Y = Size.Height-72;
label3.Location = v;

v = button1.Location;
v.Y = Size.Height-72;
button1.Location = v;

Size lbs = listBox1.Size;
lbs.Height = t.Height-80;
listBox1.Size = lbs;

mapCon1.updateExtents();
mapCon1.onResize();
mapCon1.Invalidate();
}

public int strlen(string str) {
int c = 0;

while (c < str.Length && str[c] != 0 )
c++;

return c;
}

private void mapCon1_Load(object sender, System.EventArgs e) {

}

private void menuItem5_Click(object sender, System.EventArgs e) {
Form3 f3 = new Form3();
f3.textBox1.Text = addr;
f3.ShowDialog();
addr = f3.textBox1.Text;
saveIP();
}

private void menuItem6_Click(object sender, System.EventArgs e) {
loadAlerts("filters.conf");
}

public void NetThread() {
Byte[] read = new Byte[96];
int c = 0;
bool found = false;
ArrayList newSpawns = new ArrayList();

while (true) {

int bytes = s.Read(read, 0, read.Length);

if (bytes < 96) {
int total = bytes;
while (total != 96) {
bytes = s.Read(read, total, 96-total);
total += bytes;
}
}

SPAWNINFO si = new SPAWNINFO();


si.frombytes(read);

// Check for my special packets...
// target
if (si.flags == 1) {
mapCon1.curTarget = si.Name;
}
else if(si.flags == 2) {
// Sequence start
newSpawns.Clear();
}
else if (si.flags == 3) {
if (newSpawns.Count > 0) {
ListViewItem[] items = new ListViewItem[newSpawns.Count];
int d = 0;
foreach(ListViewItem i in newSpawns)
items[d++] = i;
lock (listBox1) {
listBox1.Items.AddRange(items);
}
}

checkMobs();
mapCon1.Invalidate();
Thread.Sleep(0);
}
// Zone name
else if (si.flags == 4) {
if (si.Name != curZone) {
string f = "./maps/";
string fn = new string(si.Name.ToCharArray(0, strlen(si.Name)));
f += fn;
f += ".map";

loadmap(f);
mapCon1.fillConColors();
curZone = si.Name;
// listBox1.Items.Clear();
}
}
// Player packet
else if (si.flags == 253) {
mapCon1.playerinfo = si;
Size sz = mapCon1.Size;
mapCon1.offsetx = (int)((mapCon1.Width/2)+(si.Y*(mapCon1.rawscale*mapCon1.scale)));
mapCon1.offsety = (int)((mapCon1.Height/2)+(si.X*(mapCon1.rawscale*mapCon1.scale)));
}
// Normal spawn packet
else {
found = false;
lock(mapCon1.mobs) {
// See if we've already got this one
for (c = 0; c < mapCon1.mobs.Count; c++) {
if (si.SpawnID == ((SPAWNINFO)mapCon1.mobs[c]).SpawnID) {
// mapCon1.mobs[c] = si;
((SPAWNINFO)mapCon1.mobs[c]).gone = 0;

// Check if the state has changed in any important way
if (si.Level != ((SPAWNINFO)mapCon1.mobs[c]).Level) {
((SPAWNINFO)mapCon1.mobs[c]).Level = si.Level;
int abc = listBox1.Items.IndexOf(((SPAWNINFO)mapCon1.mobs[c]).lvi);
if (abc > 0) {
listBox1.Items[abc].SubItems[1].Text = si.Level.ToString();
foreach(ListViewItem it in listBox1.Items)
if (it.Text == si.Name)
it.SubItems[1].Text = si.Level.ToString();
}
}
if (si.Hide != ((SPAWNINFO)mapCon1.mobs[c]).Hide) {
((SPAWNINFO)mapCon1.mobs[c]).Hide = si.Hide;
foreach(ListViewItem it in listBox1.Items) {
if (it.Text == si.Name) {
if (si.Hide == 0)
it.SubItems[5].Text = "";
else if (si.Hide == 1)
it.SubItems[5].Text = "Hidden";
else if (si.Hide == 2)
it.SubItems[5].Text = "Invis";
else if (si.Hide == 3)
it.SubItems[5].Text = "IVU";
else if (si.Hide == 4)
it.SubItems[5].Text = "IVA";
}
}
}
if (si.SpeedRun != ((SPAWNINFO)mapCon1.mobs[c]).SpeedRun) {
((SPAWNINFO)mapCon1.mobs[c]).SpeedRun = si.SpeedRun;
foreach(ListViewItem it in listBox1.Items)
if (it.Text == si.Name)
it.SubItems[6].Text = si.SpeedRun.ToString();
}

mapCon1.mobs[c] = si;
found = true;
break;
}
}
}

// if it's not in the list already add it
if (!found) {
if (si.Type == 6)
si.Name = "DROP: " + si.Name;

if (si.Name != "") {
// si.X = si.X;
// si.Y = si.Y;

string t = si.Name;
foreach (string str in alerts) {
if (isSubstring(si.Name, str)) {// || si.Name[0] == '#') {
t = "*** " + si.Name;
Beep(300, 100);
break;
}
}

ListViewItem item1 = new ListViewItem(t,0);

item1.SubItems.Add(si.Level.ToString());
item1.SubItems.Add(classNumToString(si.Class));
item1.SubItems.Add(raceNumtoString(si.Race));
item1.SubItems.Add(si.Lastname);
if (si.Hide == 1)
item1.SubItems.Add("Hidden");
else if (si.Hide == 2)
item1.SubItems.Add("Invis");
else if (si.Hide == 3)
item1.SubItems.Add("IVU");
else if (si.Hide == 4)
item1.SubItems.Add("IVA");
else
item1.SubItems.Add("");
item1.SubItems.Add(si.SpeedRun.ToString());
item1.SubItems.Add(si.SpawnID.ToString());
DateTime dt = DateTime.Now;
item1.SubItems.Add(dt.ToLongTimeString());

newSpawns.Add(item1);


si.lvi = item1;
si.gone = 0;
lock(mapCon1.mobs) {
mapCon1.mobs.Add(si);
}
}
}
}
}
}

private void Form1_Load(object sender, System.EventArgs e) {

}

public string classNumToString(int num) {
if (num == 0)
return "Unknown";
else if (num == 1)
return "Warrior";
else if (num == 2)
return "Cleric";
else if (num == 3)
return "Paladin";
else if (num == 4)
return "Ranger";
else if (num == 5)
return "Shadow Knight";
else if (num == 6)
return "Druid";
else if (num == 7)
return "Monk";
else if (num == 8)
return "Bard";
else if (num == 9)
return "Rogue";
else if (num == 10)
return "Shaman";
else if (num == 11)
return "Necromancer";
else if (num == 12)
return "Wizard";
else if (num == 13)
return "Magician";
else if (num == 14)
return "Enchanter";
else if (num == 15)
return "Beastlord";
else if (num == 16)
return "Banker";
else if (num == 17)
return "Warrior GM";
else if (num == 18)
return "Cleric GM";
else if (num == 19)
return "Paladin GM";
else if (num == 20)
return "Ranger GM";
else if (num == 21)
return "Shandowknight GM";
else if (num == 22)
return "Druid GM";
else if (num == 23)
return "Monk GM";
else if (num == 24)
return "Bard GM";
else if (num == 25)
return "Rogue GM";
else if (num == 26)
return "Shaman GM";
else if (num == 27)
return "Necromancer GM";
else if (num == 28)
return "Wizard GM";
else if (num == 29)
return "Magician GM";
else if (num == 30)
return "Enchanter GM";
else if (num == 31)
return "Beastlord GM";
else if (num == 32)
return "Shopkeeper";
return "Unknown";
}

public string raceNumtoString(uint num) {
if (num == 0)
return "Unknown";
else if (num == 1)
return "Human";
else if (num == 2)
return "Barbarian";
else if (num == 3)
return "Erudite";
else if (num == 4)
return"Wood Elf";
else if (num == 5)
return "High Elf";
else if (num == 6)
return "Dark Elf";
else if (num == 7)
return"Half Elf";
else if (num == 8)
return "Dwarf";
else if (num == 9)
return "Troll";
else if (num == 10)
return "Ogre";
else if (num == 11)
return "Halfling";
else if (num == 12)
return "Gnome";
else if (num == 13)
return"Aviak";
else if (num == 14)
return "Werewolf";
else if (num == 15)
return "Brownie";
else if (num == 16)
return "Centaur";
else if (num == 17)
return "Golem";
else if (num == 18)
return "Giant/Cyclops";
else if (num == 19)
return "Trakanon";
else if (num == 20)
return "Venril Sathir";
else if (num == 21)
return "Evil Eye";
else if (num == 22)
return "Beetle";
else if (num == 23)
return "Kerra";
else if (num == 24)
return "Fish";
else if (num == 25)
return "Fairy";
else if (num == 26)
return "Froglok";
else if (num == 27)
return "Froglok Ghoul";
else if (num == 28)
return "Fungusman";
else if (num == 29)
return "Gargoyle";
else if (num == 30)
return "Gasbag";
else if (num == 31)
return "Gel Cube";
else if (num == 32)
return "Ghost";
else if (num == 33)
return "Ghoul";
else if (num == 34)
return "Giant Bat";
else if (num == 35)
return "Giant Eel";
else if (num == 36)
return "Giant Rat";
else if (num == 37)
return "Giant Snake";
else if (num == 38)
return "Giant Spider";
else if (num == 39)
return "Gnoll";
else if (num == 40)
return "Goblin";
else if (num == 41)
return "Gorilla";
else if (num == 42)
return "Wolf";
else if (num == 43)
return "Bear";
else if (num == 44)
return "Freeport Guard";
else if (num == 45)
return "Demi Lich";
else if (num == 46)
return "Imp";
else if (num == 47)
return "Griffin";
else if (num == 48)
return "Kobold";
else if (num == 49)
return "Lava Dragon";
else if (num == 50)
return "Lion";
else if (num == 51)
return "Lizard Man";
else if (num == 52)
return "Mimic";
else if (num == 53)
return "Minotaur";
else if (num == 54)
return "Orc";
else if (num == 55)
return "Human Beggar";
else if (num == 56)
return "Pixie";
else if (num == 57)
return "Drachnid";
else if (num == 58)
return "Solusek Ro";
else if (num == 59)
return "Bloodgills";
else if (num == 60)
return "Skeleton";
else if (num == 61)
return "Shark";
else if (num == 62)
return "Tunare";
else if (num == 63)
return "Tiger";
else if (num == 64)
return "Treant";
else if (num == 65)
return "Vampire";
else if (num == 66)
return "Rallos Zek";
else if (num == 67)
return "Highpass Citizen";
else if (num == 68)
return "Tentacle";
else if (num == 69)
return "Will O' Wisp";
else if (num == 70)
return "Zombie";
else if (num == 71)
return "Qeynos Citizen";
else if (num == 72)
return "Ship";
else if (num == 73)
return "Launch";
else if (num == 74)
return "Piranha";
else if (num == 75)
return "Elemental";
else if (num == 76)
return "Puma";
else if (num == 77)
return "Neriak Citizen";
else if (num == 78)
return "Erudin Citizen";
else if (num == 79)
return "Bixie";
else if (num == 80)
return "Reanimated Hand";
else if (num == 81)
return "Rivervale Citizen";
else if (num == 82)
return "Scarecrow";
else if (num == 83)
return "Skunk";
else if (num == 84)
return "Snake Elemental";
else if (num == 85)
return "Spectre";
else if (num == 86)
return "Sphinx";
else if (num == 87)
return "Armadillo";
else if (num == 88)
return "Clockwork Gnome";
else if (num == 89)
return "Drake";
else if (num == 90)
return "Halas Citizen";
else if (num == 91)
return "Alligator";
else if (num == 92)
return "Grobb Citizen";
else if (num == 93)
return "Oggok Citizen";
else if (num == 94)
return "Kaladim Citizen";
else if (num == 95)
return "Cazic-Thule";
else if (num == 96)
return "Cockatrice";
else if (num == 97)
return "Daisy Man";
else if (num == 98)
return "Elf Vampire";
else if (num == 99)
return "Denizen";
else if (num == 100)
return "Dervish";
else if (num == 101)
return "Efreeti";
else if (num == 102)
return "Froglok Tadpole";
else if (num == 103)
return "Kedge";
else if (num == 104)
return "Leech";
else if (num == 105)
return "Swordfish";
else if (num == 106)
return "Felwithe Guard";
else if (num == 107)
return "Mammoth";
else if (num == 108)
return "Eye of Zomm";
else if (num == 109)
return "Wasp";
else if (num == 110)
return "Mermaid";
else if (num == 111)
return "Harpie";
else if (num == 112)
return "Faydark Guard";
else if (num == 113)
return "Drixie";
else if (num == 114)
return "Ghost Ship";
else if (num == 115)
return "Clam";
else if (num == 116)
return "Sea Horse";
else if (num == 117)
return "Dwarf Ghost";
else if (num == 118)
return "Erudite Ghost";
else if (num == 119)
return "Sabertooth Cat";
else if (num == 120)
return "Wolf Elemental";
else if (num == 121)
return "Gorgon";
else if (num == 122)
return "Dragon Skeleton";
else if (num == 123)
return "Innoruuk";
else if (num == 124)
return "Unicorn";
else if (num == 125)
return "Pegasus";
else if (num == 126)
return "Djinn";
else if (num == 127)
return "Invisible Man";
else if (num == 128)
return "Iksar";
else if (num == 129)
return "Scorpion";
else if (num == 130)
return "Vah Shir";
else if (num == 131)
return "Sarnak";
else if (num == 132)
return "Draglock";
else if (num == 133)
return "Drolvarg";
else if (num == 134)
return "Mosquito";
else if (num == 135)
return "Rhino";
else if (num == 136)
return "Xalgoz";
else if (num == 137)
return "Kunark Goblin";
else if (num == 138)
return "Yeti";
else if (num == 139)
return "Iksar Citizen";
else if (num == 140)
return "Forest Giant";
else if (num == 141)
return "Boat";
else if (num == 142)
return "Burynai";
else if (num == 143)
return "Unknown";
else if (num == 144)
return "Unknown";
else if (num == 145)
return "Goo";
else if (num == 146)
return "Spectral Sarnak";
else if (num == 147)
return "Spectral Iksar";
else if (num == 148)
return "Kunark Fish";
else if (num == 149)
return "Iksar Scorpion";
else if (num == 150)
return "Erollisi";
else if (num == 151)
return "Tribunal";
else if (num == 152)
return "Bertoxxulous";
else if (num == 153)
return "Bristlebane";
else if (num == 154)
return "Fay Drake";
else if (num == 155)
return "Sarnak Skeleton";
else if (num == 156)
return "Ratman";
else if (num == 157)
return "Wyvern";
else if (num == 158)
return "Wurm";
else if (num == 159)
return "Devourer";
else if (num == 160)
return "Iksar Golem";
else if (num == 161)
return "Iksar Skeleton";
else if (num == 162)
return "Man Eating Plant";
else if (num == 163)
return "Raptor";
else if (num == 164)
return "Sarnak Golem";
else if (num == 165)
return "Water Dragon";
else if (num == 166)
return "Iksar Hand";
else if (num == 167)
return "Succulent";
else if (num == 168)
return "Flying Monkey";
else if (num == 169)
return "Brontotherium";
else if (num == 170)
return "Snow Dervish";
else if (num == 171)
return "Dire Wolf";
else if (num == 172)
return "Manticore";
else if (num == 173)
return "Totem";
else if (num == 174)
return "Cold Spectre";
else if (num == 175)
return "Enchanted Armor";
else if (num == 176)
return "Snow Bunny";
else if (num == 177)
return "Walrus";
else if (num == 178)
return "Rock-Gem Men";
else if (num == 179)
return "Unknown";
else if (num == 180)
return "Unknown";
else if (num == 181)
return "Yak Man";
else if (num == 182)
return "Faun";
else if (num == 183)
return "Coldain";
else if (num == 184)
return "Velious Dragon";
else if (num == 185)
return "Hag";
else if (num == 186)
return "Hippogriff";
else if (num == 187)
return "Siren";
else if (num == 188)
return "Frost Giant";
else if (num == 189)
return "Storm Giant";
else if (num == 190)
return "Ottermen";
else if (num == 191)
return "Walrus Man";
else if (num == 192)
return "Clockwork Dragon";
else if (num == 193)
return "Abhorent";
else if (num == 194)
return "Sea Turtle";
else if (num == 195)
return "B&W Dragon";
else if (num == 196)
return "Ghost Dragon";
else if (num == 197)
return "Ronnie Test";
else if (num == 198)
return "Prismatic Dragon";
else if (num == 199)
return "ShikNar";
else if (num == 200)
return "Rockhopper";
else if (num == 201)
return "Underbulk";
else if (num == 202)
return "Grimling";
else if (num == 203)
return "Vacuum Worm";
else if (num == 204)
return "Evan Test";
else if (num == 205)
return "Kahli Shah";
else if (num == 206)
return "Owlbear";
else if (num == 207)
return "Rhino Beetle";
else if (num == 208)
return "Vampyre";
else if (num == 209)
return "Earth Elemental";
else if (num == 210)
return "Air Elemental";
else if (num == 211)
return "Water Elemental";
else if (num == 212)
return "Fire Elemental";
else if (num == 213)
return "Wetfang Minnow";
else if (num == 214)
return "Thought Horror";
else if (num == 215)
return "Tegi";
else if (num == 216)
return "Horse";
else if (num == 217)
return "Shissar";
else if (num == 218)
return "Fungal Fiend";
else if (num == 219)
return "Vampire Volatalis";
else if (num == 220)
return "StoneGrabber";
else if (num == 221)
return "Scarlet Cheetah";
else if (num == 222)
return "Zelniak";
else if (num == 223)
return "Lightcrawler";
else if (num == 224)
return "Shade";
else if (num == 225)
return "Sunflower";
else if (num == 226)
return "Sun Revenant";
else if (num == 227)
return "Shrieker";
else if (num == 228)
return "Galorian";
else if (num == 229)
return "Netherbian";
else if (num == 230)
return "Akheva";
else if (num == 231)
return "Spire Spirit";
else if (num == 232)
return "Sonic Wolf";
else if (num == 233)
return "Teleport Man";
else if (num == 234)
return "Vah Shir Skeleton";
else if (num == 235)
return "Mutant Humanoid";
else if (num == 236)
return "Seru";
else if (num == 237)
return "Recuso";
else if (num == 238)
return "Vah Shir King";
else if (num == 239)
return "Vah Shir Guard";
else if (num == 240)
return "Teleport Man";
else if (num == 241)
return "Lujein";
else if (num == 242)
return "Naiad";
else if (num == 243)
return "Nymph";
else if (num == 244)
return "Ent";
else if (num == 245)
return "Wrinnfly";
else if (num == 246)
return "Tarew Marr";
else if (num == 247)
return "Solusek Ro";
else if (num == 248)
return "Clockwork Golem";
else if (num == 249)
return "Clockwork Brain";
else if (num == 250)
return "Spectral Banshee";
else if (num == 251)
return "Guard of Justice";
else if (num == 252)
return "PoM Castle";
else if (num == 253)
return "Disease Boss";
else if (num == 254)
return "Solusek Ro Guard";
else if (num == 255)
return "Bertoxxulous";
else if (num == 256)
return "New Tribunal";
else if (num == 257)
return "Terris Thule";
else if (num == 258)
return "Vegerog";
else if (num == 259)
return "Crocodile";
else if (num == 260)
return "Bat";
else if (num == 261)
return "Slarghilug";
else if (num == 262)
return "Tranquilion";
else if (num == 263)
return "Tin Soldier";
else if (num == 264)
return "Nightmare Wraith";
else if (num == 265)
return "Malarian";
else if (num == 266)
return "Knight of Pestilence";
else if (num == 267)
return "Lepertoloth";
else if (num == 268)
return "Bubonian Boss";
else if (num == 269)
return "Bubonian Underling";
else if (num == 270)
return "Pusling";
else if (num == 271)
return "Water Mephit";
else if (num == 272)
return "Stormrider";
else if (num == 273)
return "Junk Beast";
else if (num == 274)
return "Broken Clockwork";
else if (num == 275)
return "Giant Clockwork";
else if (num == 276)
return "Clockwork Beetle";
else if (num == 277)
return "Nightmare Goblin";
else if (num == 278)
return "Karana";
else if (num == 279)
return "Blood Raven";
else if (num == 280)
return "Nightmare Gargoyle";
else if (num == 281)
return "Mouths of Insanity";
else if (num == 282)
return "Skeletal Horse";
else if (num == 283)
return "Saryn";
else if (num == 284)
return "Fennin Ro";
else if (num == 285)
return "Tormentor";
else if (num == 286)
return "Necromancer Priest";
else if (num == 287)
return "Nightmare";
else if (num == 288)
return "New Rallos Zek";
else if (num == 289)
return "Vallon Zek";
else if (num == 290)
return "Tallon Zek";
else if (num == 291)
return "Air Mephit";
else if (num == 292)
return "Earth Mephit";
else if (num == 293)
return "Fire Mephit";
else if (num == 294)
return "Nightmare Mephit";
else if (num == 295)
return "Zebukoruk";
else if (num == 296)
return "Mithaniel Marr";
else if (num == 297)
return "Knightmare";
else if (num == 298)
return "The Rathe";
else if (num == 299)
return "Xegony";
else if (num == 300)
return "Balrog";
else if (num == 301)
return "Unknown";
else if (num == 302)
return "Lobster Monster";
else if (num == 303)
return "Pheonix";
else if (num == 304)
return "Tiamat";
else if (num == 305)
return "Bear PoP";
else if (num == 306)
return "Earth Golem";
else if (num == 307)
return "Iron Golem";
else if (num == 308)
return "Storm Golem";
else if (num == 309)
return "Air Golem";
else if (num == 310)
return "Wood Golem";
else if (num == 311)
return "Fire Golem";
else if (num == 312)
return "Water Golem";
else if (num == 313)
return "Veiled Gargoyle";
else if (num == 314)
return "Lynx";
else if (num == 315)
return "Squid";
else if (num == 316)
return "Frog";
else if (num == 317)
return "Flying Serpent";
else if (num == 318)
return "War Soldier";
else if (num == 319)
return "Armored Boar";
else if (num == 320)
return "Djinni";
else if (num == 321)
return "Boar";
else if (num == 322)
return "Armor Knight";
else if (num == 323)
return "Ghost Armor";
else if (num == 324)
return "Death Knight";
else if (num == 325)
return "Zek Ogre";
else if (num == 326)
return "Nightmare Spider";
else if (num == 327)
return "Crystal Spider";
else if (num == 328)
return "A Tower";
else if (num == 320)
return "Froglok";
return "Unknown";
}

private void checkMobs() {
bool done = false;

lock(mapCon1.mobs) {
foreach(SPAWNINFO sp in mapCon1.mobs) {
if (sp.gone != ditchGone)
sp.gone++;
else if (sp.Name == "" || sp.Level == 0 || sp.Race == 0 || classNumToString(sp.Class) == "Unknown" || this.raceNumtoString(sp.Race) == "Unknown")
sp.gone = ditchGone;
}

while (!done) {
int c;
for (c = 0; c < mapCon1.mobs.Count; c++) {
SPAWNINFO sp = (SPAWNINFO)mapCon1.mobs[c];
if (sp.gone == ditchGone) {
lock(listBox1) {
listBox1.Items.Remove(sp.lvi);
}
//mapCon1.mobs.RemoveAt(c);
mapCon1.mobs.Remove(sp);
break;
}
}

if (c == mapCon1.mobs.Count)
done = true;
}
}
}

private void timer1_Tick_1(object sender, System.EventArgs e) {
}


private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) {
ListView.SelectedIndexCollection sel = listBox1.SelectedIndices;

if (sel.Count > 0) {
lock(listBox1)
mapCon1.selectedID = int.Parse(listBox1.Items[sel[0]].SubItems[7].Text);
mapCon1.Invalidate();
}

}

private void menuItem8_Click(object sender, System.EventArgs e) {
lock(mapCon1.mobs) {
lock(listBox1) {
mapCon1.mobs.Clear();
listBox1.Items.Clear();
}
}
}

private void menuItem11_Click(object sender, System.EventArgs e) {
saveAlerts("filters.conf");
}

private void menuItem10_Click(object sender, System.EventArgs e) {
Form4 f4 = new Form4();

f4.ShowDialog();

if (!f4.cancelled)
alerts.Add(f4.textBox1.Text);
}

private void listBox1_ColumnClick(object sender, ColumnClickEventArgs e) {
// Put it in descending order if the column was already the one that was being sorted
if (curColumn == e.Column) {
if (curDescend)
curDescend = false;
else
curDescend = true;
}
else
curDescend = false;

curColumn = e.Column;
listBox1.ListViewItemSorter = new ListBoxComparer(listBox1.Items, curDescend, e.Column);

}

private void fontDialog1_Apply(object sender, System.EventArgs e)
{
listBox1.Font = fontDialog1.Font;
}

private void menuItem7_Click(object sender, System.EventArgs e)
{
fontDialog1.ShowApply = true;
if(fontDialog1.ShowDialog() != DialogResult.Cancel )
{
listBox1.Font = fontDialog1.Font ;
}



}

}
}

eq_freak
04-10-2003, 06:17 AM
Nice job :)

Suggestions:

- Make scale be able to go below 100. You might want to look at the entire map and not just the close vicinity, especially if you are trying to figure out where a named is.

- Make +/- on the numeric keypad zoom in/out.

Bug?:

- Sometimes it does not seem to register that I zoned. For instance if I zone into PoFire the only way I can get a moblisting, is to restart both the server and the client. Whereas if I zone from PoFire to PoTranq it usually picks up I have zoned.

tamasine
04-10-2003, 06:57 AM
just glanced at the code above.. owwww!
what's wrong with an array for the num->string conversions?
and for the smaller switches, does C not use switch anymore? (hmm.. it's probably cash - i mean C# - but surely there *must* be a switch statement? please tell me there is.. please)

tam

Scottyy
04-10-2003, 07:18 AM
--- From a few posts above grimjack wrote ---

else if (num == 319)
return "Armored Boar";
else if (num == 320)
return "Djinni";
else if (num == 321)
return "Boar";
else if (num == 322)
return "Armor Knight";
else if (num == 323)
return "Ghost Armor";
else if (num == 324)
return "Death Knight";
else if (num == 325)
return "Zek Ogre";
else if (num == 326)
return "Nightmare Spider";
else if (num == 327)
return "Crystal Spider";
else if (num == 328)
return "A Tower";
else if (num == 320)
return "Froglok";
return "Unknown";



Notice a Froglok and Armored Boar = 320 this cant be right can it, Just though i would point it out.

Wishbringer
04-10-2003, 07:27 AM
Hm, i am no skilled programmer, more a copy&paste programmer who gets some code and changes it for own purpose.

Who can write a short programm that gets SPAWNINFO like MySEQsrv but write it like hexdump into a file....



Spawn1: 000 - 00 00 00 .....
Spawn2: ....


One start while EQ is running windowed, dump for all mobs in zone, then end..



typedef struct _SPAWNINFO {
BYTE Unknown0000[0028]; // 0000 - 0027
CHAR Name[0030]; // 0028 - 0057
BYTE Unknown0058[0034]; // 0058 - 0091
DWORD Zone; // 0092 - 0095
BYTE Unknown0096[0006]; // 0096 - 0101
BYTE Type; // 0102
BYTE Class; // 0103
DWORD Race; // 0104 - 0107
BYTE Unknown0108; // 0108
BYTE Level; // 0109
BYTE Unknown0110[0010]; // 0110 - 0119
FLOAT Speed; // 0120 - 0123
FLOAT Heading; // 0124 - 0127
FLOAT Y; // 0128 - 0131
BYTE Unknown0132[0008]; // 0132 - 0139
FLOAT Z; // 0140 - 0143
FLOAT X; // 0144 - 0147
BYTE Unknown0148[0024]; // 0148 - 0171
DWORD SpawnID; // 0172 - 0175
BYTE Unknown0176[0008]; // 0176 - 0183
WORD GuildID; // 0184 - 0185
BYTE VisType; // 0224
BYTE Unknown0225[0011] // 0225 - 0235
struct _SPAWNINFO *pNext; // 0236 - 0239
BYTE Unknown0240[0024]; // 0240 - 0263
CHAR Lastname[0022]; // 0264 - 0285
int flags; // 0286
} SPAWNINFO, *PSPAWNINFO;

grimjack
04-10-2003, 07:30 AM
All I added to that code was the functions for the font dialog. I have not really got into the rest of it. I did see a min scale and max scale value but I have not looked at it much. If I don't go to bed right away I may look at a few of the other things mentioned.

Gilson
04-10-2003, 07:37 AM
nm

EnvyEyes
04-10-2003, 07:46 AM
Originally posted by Midnight
has anyone taken the time to sift through the code to make sure this is legit? people are downloading the executables and running this without doing any kind of background work? no offense to caveman.. we appreciate your skillful hand, but making a windows non compile only app completely open to the public will not exactly allow sony to 'sit tight and watch it all happen'. if you continue to develop this app and make it as easy as it is to use, can we not see thousands and thousands of people beginning to use it within the month? seq was made to be difficult to install for a reason. and in a strange way, sony respects that.

and what do the seq devs have to say about all this?

To quote what Ratt so eloquently said back in November....
"Cry 'Havoc,' and let slip the dogs of war"

Though I absolutely hate the fact that a windows version is out, Sony is in no position to 'get all fussy' anymore. Sony respects nothing but the almighty dollar... not the players, not the game... nothing! Do I really need to break open the evidence locker on this...."Legends, Server moves, name change service, etc...".

As has been stated and rehashed over and over, the "social contract" was broken, then stomped into the ground with gold cleats. I'm sure many people, including myself, would have rather seen work done to fix the Linux SEQ. Obviously someone was tired or waiting and had the knowledge to create an alternative. Bravo!
IMHO, neither side can really complain at this point. The 'contract' was broken and a SEQ fix still hasn't come, so "Cry Havoc!".

As for using an already compiled app.... have you ever downloaded shareware or 'freeware' and used it? Just wondering....

grimjack
04-10-2003, 07:48 AM
Just modify:

scale.Minimum = 100;



I made mine 50

Currently he has it in increments of 10 for adjustments on scale.

scale.Increment = 10;

And 20 for adjustments of X,Y

offsetx.Increment = 20;
offsety.Increment = 20;
Thanks
Back to work.

Midnight
04-10-2003, 08:29 AM
Originally posted by EnvyEyes
As for using an already compiled app.... have you ever downloaded shareware or 'freeware' and used it? Just wondering....

Yes but no shareware/freeware proggie I've ever DL'd has had the means to ban me from my favorite game.

Few suggestions for MSEQ

a. Color coat the levels according to how they con to you (similar to SEQ)
b. Give the option to not list all the extra shtuff the program gives (run speed, etc)
c. Make the spawn list sizeable. Some of us work in 1280/1024 or other large resoultions and would love to be able to widen the left side and make the map side smaller.

cavemanbob
04-10-2003, 10:14 AM
I'll put font dialog and change the zoom and pan things in, though I'm still not entirely happy with the way it works and look at color coding the list, it shouldn't be a problem though. The resizable list is coming and since this seems to be a popular request I'll do it soon. Removing columns at runtime is also a good idea I don't know a good way to do this yet. In the mean time you can just rearrange the columns though the positions will not be saved yet.

gezs
04-10-2003, 10:45 AM
For the map is it possible to click on a mob and highlight it in the list or to have a popup that tells the mob name and lvl.

Also any chance of adding the info column from seq to the mob list and make all the columns sortable by clicking on the column. (yes I like seeing if a mob is holding a lightsource ect)

And one other thought color code the trap / invis ect mobs on the map as purple like in seq.

If no one else does the above I may get around to it eventually.. I really miss clicking on the map though.

grimjack
04-10-2003, 10:53 AM
Here is a fix for selecting mobs on map when using X or Y offsets or both.


Currently in MapCon.cs we the lines are this:
int ox = (int)((Width/2 - (me.X+offsetxg))/(rawscale*scale));
int oy = (int)((Height/2 - (me.Y+offsetyg))/(rawscale*scale));

It should be this:
int ox = (int)((Width/2 - (me.X-offsetxg))/(rawscale*scale));
int oy = (int)((Height/2 - (me.Y-offsetyg))/(rawscale*scale));


Just change the + to - and recompile and that should fix it.


Thanks

Jillian
04-10-2003, 11:00 AM
Originally posted by tamasine
just glanced at the code above.. owwww!
what's wrong with an array for the num->string conversions?
(but surely there *must* be a switch statement? please tell me there is.. please)

LOL I was thinking exactly the same thing. Screw a switch statement, just do an array lookup. I can only imagine trading over 300 possible comparison operations for one array lookup per mob is a good thing...

cavemanbob amazing job, heartfelt thanks to you on this project for all the work you've done. thank you!!

grimjack
04-10-2003, 11:08 AM
If you see somthing that could be done better why not revamp it and post it? You do have the source.

CoolGuyEQ
04-10-2003, 11:26 AM
Cavemanbob,
Sent ya PM.

CGEQ

cavemanbob
04-10-2003, 11:28 AM
Thanks scottyy, stupid typos...

*** is what I stick in front of mobs that match an alert mob so they get stuck on the top of the list. This is the kind of thing that's really making me think about sticking in a proper options dialog...

LOTS of changes and fixes coming in today's version including some neat features.

The performance of the huge if statement is likely irrelevant as the compiler almost surely converts it to a jump table anyway. I'll probably switch it to array lookups anyway though.

KeldramosRN
04-10-2003, 01:48 PM
*** shows up in front of PCs as well, normal players with *** in front of their names, not just mobs...

And as for "alert mob" What do you mean by that?

cavemanbob
04-10-2003, 01:55 PM
There's a file called filters.conf in the client directory that has a list of a number of interesting mob names. If a spawn in the list has one of those as a substring it sticks a *** in front of it and beeps. It's a line somewhere in the NetThread function that puts the *** in there, if you don't like it, just comment it out and recompile.

cbreaker
04-10-2003, 02:23 PM
You should set up a Sourceforge project before Ratt boots this project off his forums. =)

They are free right?

cavemanbob
04-10-2003, 02:32 PM
New version:

http://alteria.sf.net/myseq-1.4.zip
http://alteria.sf.net/myseqserverc-1.3.zip
http://alteria.sf.net/seq-maps.zip

Lost of little changes that I can't remember, major ones: Font dialog for the listbox, mousewheel and +/- zoom the map, and adjustable splitter between map and listbox

Stunning
04-10-2003, 03:26 PM
Works great while in any zone that you have a map for. But I have found that with the most recent version when I zone into gunthak or Nadox. (haven't tried the other LoY zones yet) I get the can't load map (because it isn't there) but I also do not get a mob listing.

Any thoughts?

Thanks

eqtryin
04-10-2003, 03:34 PM
works great but lost the line draw from your postion to the mob or pc you select on map

cavemanbob
04-10-2003, 04:00 PM
I'll fix the non-existant map causing no mobs to show, the line from player to mob too, I haven't had a chance to test it with eq yet today so there may be other bugs hiding

Nocturo
04-10-2003, 04:03 PM
Also seems that it only updates when you click on someone on the list, or on a dot.

CoolGuyEQ
04-10-2003, 05:22 PM
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Drawing.SafeNativeMethods.GdipCreatePen2(In tPtr brush, Single width, Int32 unit, IntPtr& pen)
at System.Drawing.Pen..ctor(Brush brush, Single width)
at myseq.MapCon.Form1_Paint(Object sender, PaintEventArgs pe)
at System.Windows.Forms.Control.OnPaint(PaintEventArg s e)
at System.Windows.Forms.Control.PaintWithErrorHandlin g(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Mes sage& m)
at System.Windows.Forms.ContainerControl.WndProc(Mess age& m)
at System.Windows.Forms.UserControl.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage (Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(M essage& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/microsoft.net/framework/v1.0.3705/mscorlib.dll
----------------------------------------
myseq
Assembly Version: 1.0.1195.25863
Win32 Version: 1.0.1195.25863
CodeBase: file:///C:/Documents%20and%20Settings/<name>/Desktop/myseq/myseq.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.3300.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system/1.0.3300.0__b77a5c561934e089/system.dll
----------------------------------------
System.Drawing
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.3300.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
System.Xml
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system.xml/1.0.3300.0__b77a5c561934e089/system.xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just in time (JIT) debugging, the config file for this
application or machine (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the machine
rather than being handled by this dialog.


The client just errored out with the above in the details window.

CGEQ

cavemanbob
04-10-2003, 05:57 PM
The updates and missing line from the player to mob are already fixed, I'm just doing a couple more bugs and i'll post a little patch.

The Paint exception is annoying it has something to do with the con colors I think, but I haven't tracked it down as of yet unfortunately.

cavemanbob
04-10-2003, 09:14 PM
Bug fix release, got it working better (and had a chance to test it this time). Only the client has changed.

http://alteria.sf.net/myseq-1.4a.zip
http://alteria.sf.net/myseqserverc-1.3.zip
http://alteria.sf.net/seq-maps.zip

sauron
04-10-2003, 09:18 PM
*deleted*

EDIT: Hmm.. maybe the client link is posted twice here? See message below mine for broken link....

Elyon
04-10-2003, 09:20 PM
[QUOTE]Originally posted by cavemanbob
[B]Bug fix release, got it working better (and had a chance to test it this time). Only the client has changed.

http://alteria.sf.net/myseqclientc-1.4a.zip


The above URL is not working...

Hannibal
04-10-2003, 09:27 PM
http://alteria.sf.net/myseq-1.4a.zip <---- this IS the client.

cavemanbob
04-10-2003, 10:03 PM
Stupid typos lol, fixed the link

Elyon
04-10-2003, 10:09 PM
Link may be correct now, but file is missing.. Your working too hard CavemanBob.... :D

OK, now you edited the Server file, but changed it to 1.1. There was a 1.3 before. Don't mean to be a pain, but is 1.1 the correct Server file?

cavemanbob
04-10-2003, 10:22 PM
It's right now... Gotta think more when I'm puting those links in hehe

Elyon
04-10-2003, 10:24 PM
All is well now... All files and Links are working.

Thanks for your time spent on this Cavemanbob... We ALL appreciate it greatly.

Catt
04-10-2003, 10:40 PM
Question/Suggestion:

Is there any posibility that the client could use the LoY map format? There seems to be more of them available than SEQ maps, even considering that I did some of the SEQ format ones.

Comment:

When I tried to compile the server with VC++6 I had some errors relating to the winsock libs, after a little research I found the answer, add the middle line below the others are for reference:


#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <windows.h>

It compiles & runs with this, however, I am at work and can't test it to be sure it works, so I offer this info as a "for what it's worth", which could be useless if it doesn't work.

SEQ Suggestion:

I (and others) would really like to see the server part of this project feed info to the Linux SEQ client. Seems it shouldn't take too much to make this work, but I don't think I'm up to the challenge at the moment.

Cavemanbob:

Bravo! Thanks for breathing some life back into EQ.

cavemanbob
04-10-2003, 10:47 PM
I'll say probably on the LoY maps, anyone have an actual spec for the LoY map format?

EDIT: I knew I missed something, stupid test code was keeping targetting from working right. Uploaded now.

http://alteria.sf.net/myseq-1.4a.zip


ANOTHER EDIT: I've been getting those paint exceptions like crazy on my win2k test machine, but not on my devel machine... I'll try and toss the remote debugging package on there tomorrow because this is a REALLY annoying bug and I can't find the cause on the devel machine...

Catt
04-11-2003, 01:41 AM
I do not believe SOE has/will ever release a definitive spec for it, however:


L 582, -534, -71, 585, -530, -71, 153, 153, 153
P 141, 918, 0, 255, 255, 0, 2, East_Karana


above from Beholder_1.txt

File name seems to be short zone followed by _ and which of the 3 map 'levels' to display it as (using 1 for simplicity) .txt

The file lines are:

L = line (did I need to say that? ;) )
next 3 numbers are start x,y,z of the line
next 3 end x,y,z of the line
last 3 colour of line r,g,b

P = point (location label)
first 3 numbers location x,y,z
next 3 colour r,g,b
next 1 label size
and finally label itself, no spaces, use _ for spaces

One thing to note is that z seem to differ between SEQ and LoY it's common belief that SEQ z's are x10 of LoY, which does seem to work.

Riser
04-11-2003, 01:49 AM
About the LOY maps, I believe there was an online converter link on the old map forum. I cant find the link but maybe that could help some?

EDIT :: Converter from SHOWEQ maps to LOY maps

sauron
04-11-2003, 07:08 AM
Point #1 --> I too get the crash "paint" bugs ALL the time. So often that I really cant use the program (client crashes like every 5-20 secs ususally). Im running two WinXP machines.

While I'm here, Point #2--> And one wierd thing -- rarely I get a "Unhandled Exception" on the CLIENT. I close it, and restart, and get no map or spawns... Then I close the Server, restart server, then hit GO on client, and it works again. So it looks like when this "Unhandled exception" happens, a server restart is necessary. Maybe the crash (or the 30 other paint crashes) messes up the winsock connection... /shrug.

Anyways, I'm really looking foward to a version that doesn't crash so often on my machine! Thanks for all the effort!

Riser
04-11-2003, 07:44 AM
Servers just went down for an "emergency patch"..... are you thinking what im thinking? WinSEQ war v 2.0

CoolGuyEQ
04-11-2003, 07:54 AM
No Riser - there were a ton of bugs related to the last patch...hatelist, aggro, spawns automatically and instantly respawning, etc, etc....hopefully they fixed them

CGEQ

Wishbringer
04-11-2003, 08:35 AM
But now on other ground.

WinSEQ was like SEQ, mean encoding encrypted network datastreams.

Now reading data from memory...

It's a little bit easier IMHO.

Gilson
04-11-2003, 09:31 AM
Oooooorrrrrr

http://eqlive.station.sony.com/community/dev_view.jsp

Quit it with the conspiracy theories.

Fantastik
04-11-2003, 09:58 AM
Caveman: Might want to ask ratt to give you your own section here so we can get out of one reallly long thread :P He offered to do it for anyone who has a codebase.

EvilNecro
04-11-2003, 10:09 AM
Caveman,

For a guy that wasn't going to support the program you have been doing one hell of a job!

I was thinking of a security feature to add to the server. I think it would be a good idea to have a config file with a list of allowable IP addresses that the server will talk to and the ability to change the port.

Unless I'm missing something SOE could implement something like: telnet to suspect on port xxxx if you receive garbage ban them.

cavemanbob
04-11-2003, 10:45 AM
I'll get that stupid paint bug soon. The patch is because of the way they "fixed" the hate list.

Hannibal
04-11-2003, 11:56 AM
Unless I'm missing something SOE could implement something like: telnet to suspect on port xxxx if you receive garbage ban them.

Since CavemanBob has provided source code, you can quite easily change which port it listens on. I did that, as well as changing the names of the config files, and the actual MyShowEQ title bar out of paranoia... however, if I change the stinking icon in the title bar, I get an ' Uncaught exception ' error box before the program even launches. Since I'm not a coder, and more a meddler, I have NFC why it does that.

EvilNecro
04-11-2003, 12:37 PM
I have changed the port also but am having difficulty with the ip address. I'm poking at it with what little time I have. If I get it figgured out I will post it. It was just meant as a suggestion. I am by no means a coder, not even in the same universe as cavemanbob.

cavemanbob
04-11-2003, 12:46 PM
Lucky day, they didn't even change the offsets or data structure :)

New patch version that should fix the paint exceptions... The server port can be adjusted optionally on the command line now. format: myseqserverc <update frequency> <port>

Ther client still has the port hardcoded for the moment, but this will change shortly.

http://alteria.sf.net/myseq-1.4b.zip
http://alteria.sf.net/myseqserverc-1.4.zip
http://alteria.sf.net/seq-maps.zip

The list of allowable IP addresses isn't a bad idea, I'll stick that in the next server version. Otherwise I'm going to go through the client and do a better job of catching exceptions...

Zeppo
04-11-2003, 01:02 PM
I can't get this link to work.

http://alteria.sf.net/myseqserverc-1.4.zip

Great job Caveman!!!!

cavemanbob
04-11-2003, 01:11 PM
Fixed link

Alfred
04-11-2003, 02:56 PM
btw,

I've noticed that I had to increase the clients refresh to over 950. This on a poor PII 300mhz running win 98 hehe.

Otherwise it will lockup at different times. I assume from a race condition or overrun. Not sure. Just food for thought. :)


oh and .... Excellent work!!

edit: and the server command line to 1000ms

cavemanbob
04-11-2003, 03:10 PM
It's probably overrunning the buffer in the socket structure. I don't have any machines set up that are that slow, but that'd be my guess. Not much you can do other than what you did, though it might improve as I clean up the client a bit.

Scottyy
04-11-2003, 03:26 PM
Is there any chance of adding in the ability to fake your level for example am level 65 and want mobs at level say 62 to show up on the map as even cons (white)
I could do this in ShowEQ by defining my level to 62, anychance of a option in the menu to set user level and override one provided from the game?

This app kicks some ass keep up the great work :)


edit: Oh 1 more thing remember is ShowEQ that u could define a circle around your self to a set distance well this would be cool also as i used it as max range option for my throwing stars so i knew how close to get to mobA eg range slot item is 150 set raidius to 150 and when it gets to mob through and run back to party.

Did I say this program rocks :)

cavemanbob
04-11-2003, 04:00 PM
Neither of those should be too hard to add

Gilson
04-11-2003, 04:35 PM
I ran into the same issue with my K62-400 locking up. I tried setting the refresh rate to 1000 on the server, and 950 on the client, still locked up. Think it has more to do with the speed of the machine, or the fact that it's running 98?

cavemanbob
04-11-2003, 04:51 PM
It could be a little of both, I'm installing .NET on my win98 machine now and I'll give it a test tonight.

CoolGuyEQ
04-11-2003, 05:49 PM
Is stuff supposed to come off the spawn list when it dies? As it stands now, the mobs a re still listed.

Thanks!

CGEQ

cavemanbob
04-11-2003, 06:09 PM
It's an old bug which will hopefully be fixed soon...

sauron
04-11-2003, 07:20 PM
Just wanted to give you feedback -- the latest version is running and isn't crashing at all! Been running for hours... zoning, everything is working very stable! This is just awesome! Thanks!

cavemanbob
04-11-2003, 10:13 PM
As a sidenote that I didn't really have time to mention before, thanks to whoever wrote the keysniffer I ripped the process scanning code from, I'm not sure which one it was :), as well as those who posted code additions and bug fixes people and of course those who post new feature ideas, cause otherwise I'd run out of ideas for features :). Oh and of course the patient people who've been willing ti run my unstable beta software while it's still being written.

Fantastik
04-11-2003, 10:20 PM
old version works fine. New 1.4 version has problem on my box. I'm getting an exception error. Looks like it has something to do with networking. I can post the complete error if ya need it. I think its the error others are getting, but my box is a 2.8 ghz p4.. so its not slow...

cavemanbob
04-11-2003, 10:22 PM
Please post the whole error it'll help track the error down

TDES
04-11-2003, 11:28 PM
First Bob .. thank you :)

My SEQ PC is rather slow (P2 400 - 256, 8mb SiS 530)

none the less ... every time I start, I have to start and stop the server and client before I can get the map/mobs to show. There's no problems getting the spawnlist to show but the map is a large red "X". Eventually I can get it working, but anytime I try to change the zoom or offset I get an "unhandled exception"

I realize you are probably working with faster machines. I'm going to try a better vid card and see if it helps.

Anyway.. I hope this helps in someway. Really appreciate your efforts.

Details:

************** Exception Text **************
System.InvalidOperationException: Handle is not initialized.
at System.Runtime.InteropServices.GCHandle.Free()
at System.Windows.Forms.Timer.set_Enabled(Boolean value)
at System.Windows.Forms.Timer.Stop()
at System.Windows.Forms.UpDownButtons.StopTimer()
at System.Windows.Forms.UpDownButtons.EndButtonPress( )
at System.Windows.Forms.UpDownButtons.OnMouseUp(Mouse EventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage (Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(M essage& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.510
CodeBase: file:///c:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll
----------------------------------------
myseq
Assembly Version: 1.0.1196.22564
Win32 Version: 1.0.1196.22564
CodeBase: file:///C:/Documents%20and%20Settings/SEQ/Desktop/myseq/myseq.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.510
CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.510
CodeBase: file:///c:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
----------------------------------------
System.Drawing
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.510
CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
System.Xml
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.510
CodeBase: file:///c:/windows/assembly/gac/system.xml/1.0.5000.0__b77a5c561934e089/system.xml.dll
----------------------------------------

cavemanbob
04-11-2003, 11:45 PM
That has got to be the strangest error I've seen from .NET yet and I'm not really sure what to make of it. The red X is an indication that something failed horribly during the drawing of a control... I'm going to try to set up my k6-2 500 for some win98 testing if I can dig up a HD that works well enough for some basic testing at least, it's running a crappy MB and almost no RAM so it should be a good bottom end test platform.

I'm going to clean up most of the code with better (read some LOL) error handling soon so hopefully this guesswork error fixing will be put ot an end...

seqmage
04-12-2003, 12:06 AM
Version 1.4 finally shows the skittles on my winXP box.
quite amazing. very nice work Cavemanbob

request: when clicking on a mob on the spawn list, can it show the line on the map.
I know clicking on a mob on the map draws the line to the mob and highlighs it.. could that work the other way?
highlight the mob on the list and have the line drawn to the mob on the map?

cavemanbob
04-12-2003, 12:10 AM
/sigh it should but I guess it got gimped witht the last major changes too... It'll get put back.

MarkJames
04-12-2003, 01:45 AM
ok couple of features that would be nice :)

1. Alerts have a flashing dot or a circle around them on the map :)
2. highlight targeted mob.

I must say im still amazed evertime i run this program how damn good it is, very very big THANK YOU CMB.

sauron
04-12-2003, 02:06 AM
Seqmage: The latest version draws a line when either I click a mob on map, or a mob in list (works for me anyways).

TDES: Are you sure you are using latest version?

MarkJames: Two great suggestions!

Me: And I have one more. It would be great to have a "FIND" box, like SEQ had. It's very nice to type in "spider" when you are looking for silks, and all the spiders FLASH at you. SEQ even allowed regular expressions like "spider|bear" would flash both.... But just one would be pretty nice....

Gnutter
04-12-2003, 02:28 AM
Caveman,

Just to let you know, I have seen the "Red X" error when using the compiled app. I now run it from within the VS Development environment (not an option for people without VS.net, i know) and I havent gotten an error thrown since.

Now I'm used to the development environment and runtime environments being different in VS6 but I didnt think it would still be rearing its ugly head here.

Great work. I'm scouring your code for things I can shamelessly steal for other projects, but will give you credit.

Cheers.

Linux4e
04-12-2003, 02:36 AM
2. highlight targeted mob. This was implemented in the first versions, dunno how/why it got removed, prolly has something to do with the server part I think though

cavemanbob
04-12-2003, 02:52 AM
Keep the ideas up, for those of you who know c# I very much encourage code submissions or bug fixes despite the lack of a cvs for the moment, though it is coming soon. As another sidenote, if your suggestion seems to get ignored or unaddressed , it probably got lost in the mass of posts, I'll ask ratt to set up a grouping for this asap, 20k+ views is enough for one thread hehe.

Now from a long term perspective the linux SEQ will likely aquire some sort of cllient-server situation like my app. I really encourage anyone to do this kind of work as my unix GUI skills outside of java are really horrible. As another note I'm considering making the sevrer smarter, but this may be too intensive. Also I would very much like some sort of common data transfer format with the LEQM project so there's as many client projects as possible, but I've got ot talk to Lyenu first.

And the red X errors... I chalk those up to my inexperience with c# hopefully the cleanup will fix some, but even if it doesn't there's some damn cool features coming :)

LordCrush
04-12-2003, 02:54 AM
Cavemanbob,

In an other thread you wrote that you don't have the DDK

here is a link to the win2k ddk ... that was free availible from M$ until last year ;)

http://www.download.zp.ua/pub/programming/DDK/

DL Quick before its vanishes :p

Great Job - thank you /bow

Nurseling
04-12-2003, 03:46 AM
Fantastik program;

That being siad anyone with anyideas on spelltimers

Scottyy
04-12-2003, 04:33 AM
Besides the 2 ideas in my last post I miss the little dark gray cross hairs that show in ShowEQ that shows were a mob spawns, and also the ability to hover over them and see when the next pop is due in mins and secs

Another idea is to have a right click menu to let you slect follow yourself or the targeted mob like in ShowEQ

Wish I had C# i would love to give it a go and add little things and submit them but I supose posting here will do for now.

Keep up the good work and a big thanks from me :)

sauron
04-12-2003, 07:20 AM
Look back in this thread Scottyy -- there is a free C# compiler executable that should be on your PC right now..... Who says Microsoft doesn't give out free compilers?

CybMax
04-12-2003, 10:01 AM
Great work! Way to go :)

Btw.. Is there a way to use "wildcards" in the filter list? Ie. if i want a alert on all mobs starting with "a" or similar?

This is great!

PsychoBabble420
04-12-2003, 11:02 AM
First of all cavemanbob, this is some excellent work! Bravo!

I have also had the same exception crash mentioned on the previous page. This only seems to happen if you have myseq loaded from the char selection screen and you zone in. If I restart after the crash, the map shows up with skittles no problem.

to the previous poster who wanted to know if there is a free C# compiler, yes there is. If you down load the .NET framework from MS, its in the \windows\Microsoft.NET directory tree. csc.exe and vbc.exe are included to compile C# and VB apps using .NET. Who said MS doesnt provide free stuff? Well.. you have to 'own' a windows OS first, but hey =) bout time!!



Here is the debug data for your reference, cavemanbob:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentNullException: Value cannot be null.
Parameter name: brush
at System.Drawing.Graphics.FillRectangle(Brush brush, Single x, Single y, Single width, Single height)
at myseq.MapCon.Form1_Paint(Object sender, PaintEventArgs pe)
at System.Windows.Forms.Control.OnPaint(PaintEventArg s e)
at System.Windows.Forms.Control.PaintWithErrorHandlin g(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Mes sage& m)
at System.Windows.Forms.ContainerControl.WndProc(Mess age& m)
at System.Windows.Forms.UserControl.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage (Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(M essage& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/microsoft.net/framework/v1.0.3705/mscorlib.dll
----------------------------------------
myseq
Assembly Version: 1.0.1196.22564
Win32 Version: 1.0.1196.22564
CodeBase: file:///C:/der/myseq/myseq.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.3300.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system/1.0.3300.0__b77a5c561934e089/system.dll
----------------------------------------
System.Drawing
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.3300.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
System.Xml
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system.xml/1.0.3300.0__b77a5c561934e089/system.xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just in time (JIT) debugging, the config file for this
application or machine (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the machine
rather than being handled by this dialog.

TDES
04-12-2003, 12:11 PM
Originally posted by Gnutter
Caveman,

Just to let you know, I have seen the "Red X" error when using the compiled app. I now run it from within the VS Development environment (not an option for people without VS.net, i know) and I havent gotten an error thrown since.

Hmmm, I have had one "X" error in the DE but your right it is MUCH more stable.

SandMan2002
04-12-2003, 01:09 PM
Great work!

Only thing 2 things i would love to see added,
different colors for players
and mouse over mob names

But for an unsported program you are going a great job!

Gilson
04-12-2003, 01:33 PM
Looks like the problem was Win98... Running fine on a K62-400 with WinXP.

Quick feature request... Is there a way that you can set up a filter for the spawn list to allow you to select only PC's, only NPC's, and things like that? It'd cut down on the size of the list and make it easier to find some stuff.

cavemanbob
04-12-2003, 02:07 PM
I'll look at those bugs and suggestions, there wil probably be a new client version ready sometime today.

The Duck
04-12-2003, 02:27 PM
Hey man,

How do you want us to make changes? If we make code changes off the current code base and send them to you, that seems like an awful lot of work for you.

Sure, you can use sourcesafe to diff the files, but we all know how well that works.

Also, you should really have a suggestion forum for what you want us to work on. I'll let you continue to work the main code base, and throw in non-critial suggestions/UI improvements, etc etc.

Unless you specifically say otherwise, first thing I'm going to do is rip out a lot of hard coded crap and stick it in preference files. And...Um, going to make circles an option I think...cause squares suck =)

*quack*

If you want to e-mail me directly, send an e-mail to [email protected] (my fake address) and I'll get you a real one.

eqtryin
04-12-2003, 02:31 PM
Asking for just a tad bit of help, i have no problem compiling the server under gcc, but im totally unfamiliar with .net i am thinking the command to use would be vbc but i could be off, if anyone could post the command line arguments for compiling the client under the free .net compiler it would be much appreciated.

cavemanbob
04-12-2003, 02:48 PM
By all means make changes if you want to, I already am putting in a options dialog that saves to a file so a good chunk of the hardcoded stuff can go in there soon. I'd wait to start making many changes until I put out the new client today, just because some of the stuff will make it easier to add stuff.

I can't remember the syntax for the command line c# compiler offhand, but someone posted it at some point.

KeldramosRN
04-12-2003, 05:21 PM
Well, I've tried this program in windows, and love it... just hate having to boot into windows...

I see links for the zips of executables.. but not for the source....

can you email me (([email protected])) with a link (please not file) to where i can download the source, and give me some pointers on getting client to run in linux? or anyone else for that matter?? thanks in advance!!:D :D

cavemanbob
04-12-2003, 05:30 PM
The source is in the zips, look for the .cs files. As for getting it to run in linux, I'm not sure, but I don't think it will. There's at least one project implementing the .net framework in linux, however I don't know how far they've gotten. Another possibility is to modify the showeq source to take input from the server, I'm looking into this, but I don't have a machine running linux that can be used for development at the moment so if anyone wants to tackle this go ahead.

who_me_use_seq
04-12-2003, 05:32 PM
For gods sake Kel, try not to use your playername and server in posts here. Remember using this program is a bannable offense and the devs do still lurk here.

cavemanbob
04-12-2003, 06:25 PM
I was going to wait to add a couple for features before releasing the new version, but I don't know if I'll do anymore tonight so here it is. Only the client is updated.

http://alteria.sf.net/myseq-1.5.zip
http://alteria.sf.net/myseqserverc-1.4.zip
http://alteria.sf.net/seq-maps.zip

The only major changes are the addition of an options dialog, though it doesn't do much yet. I added the option to override the players level, -1 disables the override. I also added a circle that can be drawn at a specified range though I haven't tested it. If it does something weird just set the range as 0 and it'll turn off. Otherwise everything else was bugfixes and stuff

repudi8or
04-12-2003, 07:35 PM
When I run myseqserverc.exe on my eq machine it says :-

Running at 250ms updates
96
Waiting for new connection...

Then I start up eq and nothing. I dont get any "found pid" message from myseq. Is there something I am missing? Do I need to get a new offset address and update the offsets.txt or something? I have the binaries from myseqserverc-1.4.zip and was hoping that had the latest offsets in it.

All help appreciated

cavemanbob
04-12-2003, 07:42 PM
The offsets in 1.4 are correct. You won't get the found pid message until the client connects to the server.

Alfred
04-12-2003, 09:37 PM
I bet you are trying to run the client on a machine that can't keep up with either the data or rendering job. Try modifying the refresh value in the *.ini file to a high value - say 950 and changing the command line that starts the server (run on your EQ machine) to be 1000.

I could see this (the lockups) happening on slow PCs or someone trying to run the client, server and EQ on the same box.

I just don't know if the client will get enough processor cycles before having a buffer overun condition that locks up the client.

repudi8or
04-13-2003, 01:48 AM
Ok I got it working. Very cool Bob. I think someone asked for this before but it would be awesome if you could show what the mobs are holding in their hands (like the info field in showeq). Something i really need right now.

Thanks muchly for a great program.

cavemanbob
04-13-2003, 02:25 AM
Well, I agree that showing the item being held would be VERY useful and it can be done, but I need one of two things that I don't have at the moment. The first is the location of the pointers to the actor or character structures in the spawninfo structure and the location of the "holding" information in that structure. The second is some kick-ass memory viewer that'll let me see the eqgame process, if you know of one that works with EQ that allows searching strings, 32 bit ints and floats in memory PLEASE let me know. Otherwise I'll likely write my own eventually as WinHex won't show eqgame...

seqmage
04-13-2003, 04:21 AM
Cavemanbob, program rox.. enough said.

would it be possible,
blank canvas for zones that we dont have maps for?
I was in LoY zones today and couldnt even get the zone to show the mobs that were spawned. I tried to rename a map.. but that didnt work.

After all,we do have the map in the game anyway.. sometimes its just nice to know if "said mob" is spawned.
On a blank canvas.. it could approximate the spawns?
dont know if it can be done.

Please Keep up the great work.

CybMax
04-13-2003, 04:52 AM
Or does anyone have converted loy maps to .map format?
Ref. my post in "ShowEQ Mapping", i could not quite get that AWK script to work..

Anyone?

CybMax
04-13-2003, 04:59 AM
I dunno if you tried this one Cavemanbob :
http://membres.lycos.fr/tsearch/

Can search different stuff.. the only thing i found to be needed to get the running eqgame up is to start everquest, log on, and when ingame, minimize to a window THEN start tsearch.

eqgame will come up in the process list then. If tsearch is started BEFORE eq, it wont find it somehow.

Dunno if it's what you need..

Singe
04-13-2003, 10:28 AM
Cavemanbob you rock !

A big thankyou from a non programmer.

domesticbeer
04-13-2003, 11:02 AM
Ok, I guess I am not getting this. I run the server on my eq box, run the client on separate pc. I get nothing.


Do I need to pass or tell the server anything about the client?

I edited the server file and put in teh ip of the eq box.


Any Help a readme would be awesome.

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it
at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
at System.Net.Sockets.TcpClient.Connect(IPEndPoint remoteEP)
at System.Net.Sockets.TcpClient.Connect(IPAddress address, Int32 port)
at myseq.Form1.button1_Click(Object sender, EventArgs e)
at myseq.MapPane.button1_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventAr gs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage (Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(M essage& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/microsoft.net/framework/v1.0.3705/mscorlib.dll
----------------------------------------
myseq
Assembly Version: 1.0.1197.32882
Win32 Version: 1.0.1197.32882
CodeBase: file:///C:/myseq/myseq.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.3300.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system/1.0.3300.0__b77a5c561934e089/system.dll
----------------------------------------
System.Drawing
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.3300.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
System.Xml
Assembly Version: 1.0.3300.0
Win32 Version: 1.0.3705.288
CodeBase: file:///c:/windows/assembly/gac/system.xml/1.0.3300.0__b77a5c561934e089/system.xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just in time (JIT) debugging, the config file for this
application or machine (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the machine
rather than being handled by this dialog.

cavemanbob
04-13-2003, 11:52 AM
domesticbeer, you have the wrong IP address or port specified in the client.

I'll give tsearch a try, hopefully it'll do the job. Also I had intended to fix the missing map thing, but forgot to, it'll go in the next release.

joojooga
04-13-2003, 12:36 PM
Would it be easy to make it where players show up as hot pink (Hey I liked it hot pink) so we can differentiate them from mobs? that would rock too.

domesticbeer
04-13-2003, 01:14 PM
Ok in my client i have the client of my eq box? what should it be?

Cleric78
04-13-2003, 01:31 PM
great work cavemanbob

one question tho

on the comp that runs "myseq" it keeps locking up after 5-10mins ... it run perfect till then ... any ideas why?

its a:

amd 1gig
512 ram
64meg gfx2
30gig hd
winME

on the comp that runs the "myseqserver" its a:

amd 2.2gig
512 ram
128meg gfx4 TI
80gig hd
winXP (home)

the only thing i can think of that might be the problem is winME

maybe someone else might know why it keeps frezzing up after 5-10mins of use

Cleric78

Scottyy
04-13-2003, 01:34 PM
cavemanbob in order to get Tsearch to see eqgame try this.

Use run or open a command prompt and type:

at <time+1min> /interactive "C:\Program Files\Tsearch\Tsearch.exe"

were <time+1min> is the time on your computer + 1 min example below

Say its 20:30 type the following
at 20:31 /interactive "C:\Program Files\Tsearch\Tsearch.exe"

and TSearch wil load with access to all thats running on your system including eqgame.exe

Hope this helps and ofcourse it works for other memory editing programs also.

On another note thankyou for adding my 2 ideas 1 about the level and the other about the range circle will help me alot.

Keep you the good work :) I am now looking in to getting .net books to learn this stuff :)

cavemanbob
04-13-2003, 01:38 PM
It could very well be the windows ME, I suspect there's a problem with running this on the windows 98, but I'm having trouble finding it.

domestic beer, the client should have the IP address of the EQ machine or 127.0.0.1 if it's running on the same machine as the server.

domesticbeer
04-13-2003, 01:46 PM
Ok here is my setup

PC1 (EQ play box running the server) XPpro framework 1.1
1
1
1
Hub
1
1
1
PC2(Running the client with the ip in the server file set to the pc1) xppro framework 1.1



On the server that is running in the command prompt it reads

Running at 250ms updates
96
Waiting for new connection





On the box with the client i hit the Go buttion and get that error on the client.


Is there a port that i need to specify some where>

Cleric78
04-13-2003, 02:06 PM
allrighty guess i gotta upgrade this comp to XP too and try again

geEQ
04-13-2003, 02:24 PM
Domestic, did you enter the ip of the box running the server under the options menu on the client?

As mentioned before, if you do have the correct Ip entered in the client options menu, try using telnet to connect to the server IP and the proper port. If you get garbage you have the right info. If you get nothing something on your network is gumped.

Scottyy
04-13-2003, 02:25 PM
Hi there.
Just got home downloaded the new myseq and tryed the new features and from what i can gather the range circle works well but the override level has no effect :(
I am still listed at my own level (65) in the list to the left and the mobs that are the level I wish to see con white (62) are still showing up as DarkBlue on the map when i set override level to 62.

Hope this is easy to fix if not thanks for trying anyways :)

Long live MySEQ :)

cavemanbob
04-13-2003, 02:29 PM
It's already fixed along with a few other bugs that got through, I'll post a new version sometime today. I'm also putting in the option to draw players without the con colors.