PDA

View Full Version : Pattern Help



Nobody
05-20-2002, 10:58 AM
Ok, In my filtering I'm making a huge list of Pet names to cut false positives. I'm trying to find the "patterns" for these mobs such as:

g[ae][rs][eo] or whatever. I'm pasting a small section. If anyone can take a look and post I'd appreciate it.

Gabab
Gabanab
Gabaner
Gabann
Gabantik
Gabarab
Gabarer
Gabarn
Gabartik
Gabekab
Gabeker
Gabekn
Gaber
Gabn
Gabobab
Gabober
Gabobn
Gabobtik
Gabtik
Gadallion
Gafala
Gamali
Ganab
Ganer
Gangel
Gann
Gantik
Garab
Garakbar
Garaner
Garann
Garantik
Gararab
Gararer
Gararn
Garartik
Garekab
Gareker
Garekn
Garer
Garn
Garober
Garobn
Garobtik
Gartik
Gasab
Gasanab
Gasaner
Gasann
Gasantik
Gasarab
Gasarer
Gasarn
Gasartik
Gasekab
Gaseker
Gasekn
Gaser
Gasobab
Gasober
Gasobn
Gasobtik
Gastik
Gebab
Gebanab
Gebaner
Gebann
Gebantik
Gebarab
Gebarer
Gebarn
Gebartik
Gebekab
Gebeker
Gebekn
Geber
Gebn
Gebober
Gebobn
Gebobtik
Gebtik
Gekab
Geker
Gekn
Genanab
Genaner
Genann
Genantik
Genarab
Genarer
Genarn
Genartik
Genekab
Geneker
Genekn
Gener
Genn
Genobab
Genober
Genobn
Genobtik
Gentik
Gibab
Gibanab
Gibaner
Gibann
Gibantik
Gibarab
Gibarer
Gibarn
Gibartik
Gibeker
Gibekn
Giber
Gibn
Gibobab
Gibober
Gibobn
Gibtik
Glati
Glubbsink



Thers alot more, my list is up to 990 names... If can get this down to a list of about 5 reg ex's I'd be much happier and ti'd be alot easier to go through the really long spawnlists if I get them.

Gullork
10-14-2002, 10:27 PM
I've been attempting to work with spawnlogs for the last week. I sent one to Blue a long time ago, but just recently became interested myself in obtaining a full list of mobs in zones.

I'm seeking to filter out all players, pets, corpses, mounts, familiars, and non-fightable mobs that ShowEQ sees like timers, invisibles, traps, spires, boats, shuttles, skiffs, rocks, etc...... in order to get a list of fightable mobs and their levels and their zones.

I left a message over on Blue's site asking him if there is any kind of a list made up yet from the logs we sent in. Even if there is, I'd like to help in any projects related to this. I can't program, but I'm sure there are some other tasks that I should be able to perform.

So, a few questions that I could not find an answer for by searching and viewing the ShowEQ files...

Do we (any of us) have a complete list of spawns?
Do we have a complete list of pet names to filter out?

As for the spawnlog, how can I change it to record all mobs upon zone in (tried again last night, was only logging new spawns)?

Is there any way to filter out (via ShowEQ *before it logs*) which kinds of spawns are recorded? For instance, you can filter the types of spawns shown IN ShowEQ, is there any way to carry that over into the Spawnlog functionality itself? It would be nice to tell it not to log players or pets or invisible men or whatnot in the beginning rather than having to filter them out later. Of course, I'll take whatever I can get. :)

I'd be happy to alter the ShowEQ code myself to add options or configure it to log spawns the way I want it to, but I know nothing about programming. I am however willing to apply any changes as a beta tester, or make changes as suggested to me.

Anyway, I've rambled on enough. I think I have explained what I am trying to acheive in a somewhat passible manner. Any help or suggestions on how to do this are welcome, as are links to any semi-completed material so that I don't have to reinvent the wheel so to speak.

ksmith
10-15-2002, 08:32 AM
I ended up with a pretty compact regex for pet names, it was essentially the first letter, 0 or more of the middle 2-3 letter groupings, and 0 or 1 of the endings (-tik and there was another 1 or 2 endings). Unfortunately I can't find the regex anymore.

Edit: 0 or more of the middle parts... not 1 or more

Mr. Suspicious
10-15-2002, 09:21 AM
Is there any way to filter out (via ShowEQ *before it logs*) which kinds of spawns are recorded?

Can it? Yes. Would anyone want to? No.

Why don't you simply filter out all you don't want from the spawnlog.txt and dump that in a new file, it's simple as that. And you can use the standard Linux commands to do it, no need to know anything about programming.


Thers alot more, my list is up to 990 names... If can get this down to a list of about 5 reg ex's I'd be much happier and ti'd be alot easier to go through the really long spawnlists if I get them.

Why not use the complete spawn data send to the client to its fullest potential and create a simple solution to a "difficult" problem?

In the mob data there's also a "belongs to" field. That field contains the current mob_id of another mob in the zone, that the mob with that field set is the pet off.

Simple example:

ID, name, field
0002,A_Zombie,0000
0004,#A_Lazy_Orc,0000
0006,Player_X,0000
.
.
.
0024,Gobakn,0006
0040,A_commander,0000
0042,A_commander pet,0040

To filter any player pets: Simply filter:

(pseudocode)
if field <> 0000 and right(name,3) <> "pet" then IS PLAYER PET

Last time I checked this "field" wasn't usable in the filterline yet tho.


it was essentially the first letter, 0 or more of the middle 2-3 letter groupings, and 0 or 1 of the endings (-tik and there was another 1 or 2 endings).

So theoretically any mobs with only one letter names "K", "Q" etc. are always pets?

ksmith
10-15-2002, 10:02 AM
I'll see if I can find it when I get home from work. I don't remember if I required and ending if there was no middle. However, it worked quite well at cleaning up my spawnlog.

Cryonic
10-15-2002, 10:07 AM
Could always use perl to parse through the spawnlog.txt file to deal with the pet's without having to know their names (as was suggested by Mr. Suspicious). Just read in the spawnlog.txt file and turn it into an array, then simply delete from the array any record who's third column matches the first column and that the first column match is also a PC (keeps you from deleting mob pets).

I don't really know perl, but could do something like this with php.

Easiest way I can think of to delete the record from the array is to use a count variable that holds the length of the array, then just swap the record with the last record in the array and reduce the count by 1.

Mr. Suspicious
10-15-2002, 10:36 AM
then simply delete from the array any record who's third column matches the first column and that the first column match is also a PC (keeps you from deleting mob pets).

Wait a sec, wait a sec! *g*

Before you start doing that make sure those two fields _are_ logged in spawnlog.txt. I have no idea if it does log the ID number of the mob, because those change all the time, each new spawn gets allocated a new ID number, so today "An Orc" might be 03FF and tomorrow it could be 002E.

All I know is that the actual Mob data send to the client does contain those two fields. It was just an example source: so the filed numbers (the order in wich they are stored) could be field 20 and field 6 for all I know without having access to my stuff at home *g*

BlueAdept
10-15-2002, 11:55 AM
This is the format of the spawnlogs:

:name(spawnID):Level:Xpos:Ypos:Zpos:H.m.s:Ver:Zone :eqHour.eqMinute.eqMonth.eqDay.eqYear:killedBy(spa wnID)

Not much help for finding pets except by name.

ksmith
10-15-2002, 12:15 PM
I knew filtering pets had come up before. Here's the link:

http://seq.sourceforge.net/showthread.php?s=&threadid=1284

Mr. Suspicious
10-15-2002, 01:22 PM
This is the format of the spawnlogs:

:name(spawnID):Level:Xpos:Ypos:Zpos:H.m.s:Ver:Zone :eqHour.eqMinute.eqMonth.eqDay.eqYear:killedBy(spa wnID)

Not much help for finding pets except by name.

So someone has to add



:summonedBy(spawnID)


and "all your problems belong to us"

(Just trying to offer an easy solution to a difficult to filter thing)

Cryonic
10-15-2002, 02:49 PM
and what about pets that were already summoned before you entered the zone? Last time I paid any attention to this, SEQ couldn't link the pet to it's owner if it was summoned before I showed up in the zone.

high_jeeves
10-15-2002, 03:12 PM
The ownerId is sent to client along with the spawn information, but only for player's pets (not for NPC pets)/

--Jeeves

ksmith
10-15-2002, 05:36 PM
Ok, here's the list of perl regexes I use for cleaning up my spawnlog.txt

Horse, warder, familiar, corpse filter:
<code>/s_(Mount|warder|familiar|corpse)$/</code>

Eye of zomm filter:
<code>/^Eye_of_/</code>

Summoned pet filter:
<code>/^[GJKLVXZ]([aeio][bnrsk])+(n|tik)?$/
/^[GJKLVXZ]tik$/</code>

Gullork
10-15-2002, 09:06 PM
The whole thing would be much easier to work with if we could add three additional columns.

Class
Race
and the Belong To or Summoned By column

Then, it would be easy to filter out pets, invisible men, whatever... without complicated name matches. Filtering out Mounts and corpses and such are easy and brainless, it would be simple to add filters for any summed/belonging and invisible men, heck even shopkeepers if you wanted.

I hope to not only work on improving filters here and there, but to also dump this info into a db for some fun.

My ideal wish? To log to the spawn log all the columns shown in the spawn list. Then I could even have BodyType to play with. Is this hard to change?

Mr. Suspicious
10-17-2002, 05:34 AM
Originally posted by high_jeeves
The ownerId is sent to client along with the spawn information, but only for player's pets (not for NPC pets)/

--Jeeves

It's there for NPC pets aswell HJ.

This is data as I retrieve it from memorry when zoning into a zone using EQCollector (http://upload.eqcollector.com:8080/EQC/News). I collected it by zoning into the zone and emmediatelly zoning out again. I am assuming this data should also be "sniffable" by ShowEQ.



Player:

Spawn: 071D (31) #X`s_familiar00 L: 20, G: 2, HP: 100%, Owned: 071C, Size: (3.00, 0.67-1.25)
Race: Imp, RaceType: NPC, Class: Warrior, Deity: NONE, Position: 100
Movement: Pos: ( -67 -430 178). Accel: 0, Dir: -57, Rotation: 0, Speed: ( 0 0 0)
Invis: 0, Sneak: 0, PVP: 0, Light: 0, Anon: 0, AFK: 0, LD: 1, GM: 0, Breath: 3, Armor: 0, Helm: 255, Guild: FFFF(0000)
Equipment: 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0)
U_00: 00568E04, P_41: 38 P_49: D1, U_58: 01, U_5D: 420740
U_D6: 00 Code_X: FF FF FF FF FF FF U_DD: FF U_DE: 0000

Spawn: 071C (1) X XX L: 29, G: 0, HP: 100%, Owned: 0000, Size: (6.00, 0.46-0.70)
Race: Erudite, RaceType: Player, Class: Wizard, Deity: THE TRANQUIL, Position: 100
Movement: Pos: ( -72 -433 197). Accel: 66, Dir: 59, Rotation: 66, Speed: ( 72 -392 -374)
Invis: 0, Sneak: 0, PVP: 0, Light: 0, Anon: 0, AFK: 0, LD: 0, GM: 0, Breath: 0, Armor: 255, Helm: 255, Guild: 003E(0000)
Equipment: 2(0), 12(599BFF), 12(599BFF), 12(599BFF), 0(0), 0(0), 0(0), 50(0), 56(0)
U_00: FFFDFFFF, P_41: 00 P_49: 00, U_58: 00, U_5D: 420740
U_D6: 00 Code_X: FF FF FF FF FF FF U_DD: FF U_DE: 0000

Spawn: 10E6 (8) Vobekn00 L: 47, G: 2, HP: 1%, Owned: 10DD, Size: (7.00, 0.67-1.25)
Race: Spectre, RaceType: NPC, Class: Warrior, Deity: NONE, Position: 100
Movement: Pos: ( 232 210 -158). Accel: 0, Dir: -61, Rotation: 0, Speed: ( 0 0 0)
Invis: 0, Sneak: 0, PVP: 0, Light: 0, Anon: 0, AFK: 0, LD: 1, GM: 0, Breath: 3, Armor: 1, Helm: 255, Guild: FFFF(0000)
Equipment: 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0)
U_00: 00000000, P_41: 00 P_49: 00, U_58: 01, U_5D: 420740
U_D6: 00 Code_X: FF FF FF FF FF FF U_DD: FF U_DE: 798D

Spawn: 10DD (1) X XX L: 60, G: 2, HP: 77%, Owned: 0000, Size: (5.00, 0.46-0.70)
Race: Spectre, RaceType: Player, Class: Necromancer, Deity: THE PRINCE OF HATE, Position: 100
Movement: Pos: ( 17 217 -147). Accel: 0, Dir: -70, Rotation: 12, Speed: ( 0 0 0)
Invis: 0, Sneak: 0, PVP: 0, Light: 15, Anon: 0, AFK: 0, LD: 0, GM: 0, Breath: 2, Armor: 1, Helm: 255, Guild: 004D(0000)
Equipment: 0(0), 14(193219), 14(193219), 14(193219), 1(3C3C50), 17(0), 20(0), 68(0), 210(0)
U_00: 04013703, P_41: 0A P_49: 03, U_58: 00, U_5D: 420740
U_D6: 00 Code_X: FF 00 07 07 00 00 U_DD: 01 U_DE: 0000

NPC:

Spawn: 08B6 (8) a_dismal_rage_initiate03_pet00 L: 5, G: 2, HP: 100%, Owned: 08B2, Size: (5.00, 0.67-1.25)
Race: Skeleton, RaceType: NPC, Class: Warrior, Deity: NONE, Position: 100
Movement: Pos: ( 67 -1136 27). Accel: 0, Dir: -59, Rotation: 0, Speed: ( 0 0 0)
Invis: 0, Sneak: 0, PVP: 0, Light: 0, Anon: 0, AFK: 0, LD: 1, GM: 0, Breath: 0, Armor: 0, Helm: 255, Guild: FFFF(0000)
Equipment: 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0)
U_00: 0E682C99, P_41: 6F P_49: B2, U_58: 00, U_5D: 420740
U_D6: 00 Code_X: FF FF FF FF FF FF U_DD: FF U_DE: B56B

Spawn: 08B2 (1) a_dismal_rage_initiate03 L: 5, G: 1, HP: 100%, Owned: 0000, Size: (-1.00, 0.67-1.25)
Race: Human, RaceType: NPC, Class: Necromancer, Deity: NONE, Position: 100
Movement: Pos: ( 62 -1141 28). Accel: 0, Dir: -85, Rotation: 0, Speed: ( 0 0 0)
Invis: 0, Sneak: 0, PVP: 0, Light: 0, Anon: 0, AFK: 0, LD: 1, GM: 0, Breath: 0, Armor: 12, Helm: 255, Guild: FFFF(0000)
Equipment: 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0)
U_00: B47B584F, P_41: 49 P_49: 87, U_58: 00, U_5D: 420740
U_D6: 00 Code_X: FF FF FF FF FF FF U_DD: FF U_DE: F91C

This field is a different one then the "KilledBy" field as indicated by:

Spawn: 0E7E (1) aqua_goblin_marauder's_corpse9 L: 6, G: 2, HP: -27%, Owned: 0000, Size: (-1.00, 0.67-1.25)
Race: Goblin, RaceType: Player Corpse, Class: Warrior, Deity: NONE, Position: 120
Movement: Pos: ( -146 2852 150). Accel: 0, Dir: -27, Rotation: 0, Speed: ( 3 -2 0)
Invis: 0, Sneak: 0, PVP: 0, Light: 0, Anon: 0, AFK: 0, LD: 1, GM: 0, Breath: 0, Armor: 3, Helm: 255, Guild: FFFF(0000)
Equipment: 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0), 0(0)
U_00: 00000000, P_41: 00 P_49: 00, U_58: 00, U_5D: 420740
U_D6: 00 Code_X: FF FF FF FF FF FF U_DD: FF U_DE: 3020



This is data from NPC's and Players and their pets that were already UP when I zoned in AND they were on the other side of the zone when I zoned in.

high_jeeves
10-17-2002, 08:38 AM
Cool... that is (relatively) new..

--Jeeves