mgeitz / eqalert Goto Github PK
View Code? Open in Web Editor NEWProject 1999 Log Parser
License: GNU General Public License v2.0
Project 1999 Log Parser
License: GNU General Public License v2.0
eqalert.py
Traceback (most recent call last):
File "eqalert.py", line 200, in <module>
main()
File "eqalert.py", line 64, in main
chars = eqa_config.get_chars(config)
File "/home/arch/project/eqalert/lib/eqa_config.py", line 43, in get_chars
add_char(name.lower())
File "/home/arch/project/eqalert/lib/eqa_config.py", line 62, in add_char
chars.append(name.lower())
NameError: global name 'chars' is not defined
The spoken tell messages set in the default cnofig are pretty fun, it does a great job of speaking each full line identified as tell
outloud.
This can feel slow due to the xyz tells you,
prefix.
This can feel annoying when receiving tells from multiple people at once.
Can I modify the tone/speed of the spoken message based off the senders username? This would be more interesting.
pytest
Populate settings tab
Currently characters and servers are stored seperately, while each character may have n servers and each server likely has n characters - these should be unified in the config under the filename or char/server combo.
Store damage events and render a dps meter
More settings!
Character selection seems to only actually change characters 30% of the time.
This is puzzling.
On the bright side you can eventually change your character to the one you want if you just keep changing selections and selecting.
The current implementation to read the active log file assumes the log is only written to at most every 0.001 seconds and is never written with more than one line at a time.
During high log traffic, lines are missed.
This is reproducable when receiving a tell with the speak alert set while sitting beside combat between many parties.
Either, pyinotify
is not fast enough, the updates occur more frequently than every 0.001 seconds, or there is an unknown issue with the log file processor.
Players on EverQuest:
---------------------------
[ANONYMOUS] Foobar <Guild>
Several who matches are missing. Players are matching fine, but anon tagged players are missed.
~/.eqa/log/undetermined.txt
and ~/.eqa/log/eqalert.txt
at startupReplace 1, 2, 3, 4, 5 with the actual spoken words they match to, or allow the value of sound to be any arbitrary string to be spoken.
Lines 24 to 26 in 9fe831c
The last part of this to survive the initial rewrite..
Prerequisite #12
I'm positive this cobbled if/else structure can be optimized by using a different data structure
This would be a doozy.. but, a tab with a map of the current zone and most recent loc would be cool. Both should be in the new state object
This is no longer getting picked up and reaching undetermined.txt
Foobar invites you to join a group.
To join the group, click on the 'FOLLOW' option, or 'DISBAND' to cancel.
Post rewrite character log switching isn't working, currently only the default character works
draw events: Error on line 272: addwstr() returned ERR
On occasion, the incorrect sound path is used when playing a "run time" sound
INFO:root:[2019-10-30_19:03:24]: speak: Error on line 69: [Errno 2] No such file or directory: "/tmp/eqa/sound/chacoo tells you, 'i'm in innothule/feerot'.wav"
This is reaching undetermined:
[60 Oracle] Zudagg (Troll) <Kingdom> LFG
There is a silent crash in the process log thread which causes the parser to stop listening to the log
INFO:root:[2019-10-28_13:02:45]: process_log: Error on line 59: list index out of range
This tab should really just mirror and manipulate config.json
enter
should select things, not right arrow
. What was I thinking?
Put:
last_state: {
¦ ¦afk¦: ¦true¦,
¦ ¦character¦: ¦Indef¦,
¦ ¦direction¦: ¦South¦,
¦ ¦location¦: {
¦ ¦ ¦x¦: ¦552.31¦,
¦ ¦ ¦y¦: ¦-84.95¦,
¦ ¦ ¦z¦: ¦99.1¦
¦ },
¦ ¦server¦: ¦P1999Green¦,
¦ ¦zone¦: ¦Plane of Mischief¦
},
In each:
¦ ¦Indef_P1999Green¦: {
¦ ¦ ¦char¦: ¦Indef¦,
¦ ¦ ¦disabled¦: ¦false¦,
¦ ¦ ¦file_name¦: ¦eqlog_Indef_P1999Green.txt¦,
¦ ¦ ¦server¦: ¦P1999Green¦
¦ },
Rewrite lib/actions.py
Direction does not update in state
following a sense heading command response
Split up the determine method in lib/parser.py
by grouped line types, ordered by assumed frequency.
melee
spells
recieved messages
sent messages
command output
system messages
emotes
pets
Reloading the config seems to cause the program to exit without error in a bash shell using the terminator terminal emulator
Try one of these setup.py
thingies
Use in-game /say
to send parser commands, better for single monitor setups I think
/say parser debug on
/say parser debug off
/say parser raid on
/say parser raid off
/say parser mute
/say parser unmute
/say parser mute tell
/say parser unmute tell
/say parser mute tell [playername]
/say parser unmute tell [playername]
Maybe not everyone has bash? ¯\_(ツ)_/¯
The following test cases are falsly reporting as undetermined lines:
you forget ensnare.
your spell is interrupted.
you were hit by non-melee for 17 damage.
parser grabs hold of parsette and begins to dance with her.
it begins to rain.
it begins to snow.
<linkdead>[60 phantasmist] dagner (gnome) <tempest>
it will take you about 30 seconds to prepare your camp.
you abandon your preparations to camp.
you no longer have a target.
you no longer have a target.
Store heal events
Currently configs are just dismissed based on the value of version in it. It changes a lot less these days, and when it does it is just new line types.
Clean the upgrade path here, deleting or manually updating the config sucks.
.gitignore
the configWhen eqemu logs exist and a new config is generated, the default log user is not updated from Change
to a real user.
The filler user Change
should only be needed if no logs exist for said server
Remnants from an old heal and damage parsing implementation should be removeed ahead of v2
INFO:root:[2022-03-09_21:51:58]: set last state: Error on line 182: Extra data: line 615 column 6 (char 13512)
Sometimes either changing characters or zones to last_state
after generating a new config.json
adds extra json formatting characters.
Doesn't happen on configs with a populated last_state
Toggle mute for full text to speech triggers
Populate state tab
raid state
zone
character
camping state
afk state
zone population state?
location?
Brightie begins to cast a spell.
alumi regains concentration and continues casting.
Tiale's casting is interrupted!
a fatestealer drake has become ENRAGED.
The Avatar of War is no longer enraged.
Adjutant Jharll goes on a RAMPAGE!
a gust of wind has been slain by Bilbowned!
You have slain Treasure Chest!
the total trade is: 0 pp, 0 gp, 148 sp, 0 cp
you have finished memorizing spirit of wolf.
your gate is too unstable, and collapses.
you haven't recovered yet...
to join the group, click on the 'follow' option, or 'disband' to cancel.
you cannot memorize a spell you already have memorized.
you have finished memorizing circle of wakening lands.
you have joined the group.
you have been removed from the group.
you invite outcast to join your group.
outcast has joined the group.
your group has been disbanded.
cromen regards you indifferently -- he appears to be quite formidable.
you gain party experience!!
You gain experience!!
percisely tries to crush a vapor golem, but a vapor golem dodges!
percisely tries to crush a vapor golem, but a vapor golem parries!
a vapor golem tries to hit zipperzuk, but zipperzuk blocks!
Glowin Scores a critical hit!(175)
percisely tries to crush a vapor golem, but a vapor golem ripostes!
--zipperzuk has looted a rune of al'kabor.--
--You have looted a Flayed Skin Leggings.--
you receive 0 platinum, 2 gold, 1 silver, 2 copper as your split.
a desert madman is ahead and to the left.
a desert madman is ahead and to the right.
a desert madman is straight ahead.
a desert madman is behind and to the left.
a desert madman is behind and to the right.
a desert madman is behind you.
a desert madman is to the left.
a desert madman is to the right.
a drolvarg guardian says 'following you, master.'
a drolvarg guardian says 'guarding with my life..oh splendid one.'
a drolvarg guardian says 'sorry, master..calming down.'
a drolvarg guardian says, 'that is not a legal target master.'
Earth Time: Friday, March 11, 2022 12:02:16
Game Time: Saturday, January 07, 3153 - 10 AM
Glug, glug, glug... Aaeerian takes a drink from a Pod of Water.
You begin casting Engulfing Roots.
MESSAGE OF THE DAY: Welcome to Project 1999: Green! Please take the time to visit our forums and review the Play-Nice-Policy!
GUILD MOTD: Calcium - foobar
Welcome to EverQuest!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.