Implementing: Achievements

EQ2Emulator Development forum.

Moderator: Team Members

User avatar
Ememjr
Team Member
Posts: 975
Joined: Wed Mar 15, 2017 9:41 am
EQ2Emu Server: Perseverance

Re: Implementing: Achievements

Post by Ememjr » Thu Mar 28, 2019 1:40 pm

unless i can find the code xinus wrote 5 years ago to support the smaller list size, i am going to rewrite it
although i would prefer to only use AOM or higher client and not dov or coe i will let the world create achieveement packets for both client types, and the let the client version determine which packet is sent out for the for the achievement list

i know there are alway complaints that the world takes to long to start up, when the server is live emu, whould it hurt if it tok 15 minutes to start up, Live eq2 is always down an hour for an update or reboot

User avatar
Ememjr
Team Member
Posts: 975
Joined: Wed Mar 15, 2017 9:41 am
EQ2Emu Server: Perseverance

Re: Implementing: Achievements

Post by Ememjr » Fri Mar 29, 2019 8:03 am

ok so now that my issue is resolved and i got this working in DOV just fine, i will concentrate on DOV to get some of the actual tracking in place

first of all we need to have counters that kep track of this type ofthe XX Gnoll Slain, we cannot just use the achievement ID since there are

8 achiements that use this counter

we have the `character_achievements_items` that tracks the

char_id character
achiement_id
and number of items
add item id


i propose to add a table for a list of ids for thes type of info
such as
1 gnoll killed
2 collection completed
3 item crafted
4 rare harvested
etc for each type and use this id as the item id above

then in the server when a player kills a gnoll or coletes a collection we just update the the single item and it will update the gnoll killed etc

the other thing we have to account for is triggers that unlock another achievement like once you kill 25 gnolls it unlocks and make visable the 50 gnol achievemnt
i will but something to gether and submit

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Implementing: Achievements

Post by Jabantiz » Fri Mar 29, 2019 3:44 pm

There is already a `character_history` table in place that is meant for stuff like this, basically tracking whatever needs to be tracked per character. It has not been used a lot so it may still need some work.

User avatar
Ememjr
Team Member
Posts: 975
Joined: Wed Mar 15, 2017 9:41 am
EQ2Emu Server: Perseverance

Re: Implementing: Achievements

Post by Ememjr » Fri Mar 29, 2019 5:42 pm

does not look like the history working to well, the id is up do 915146 (auto increment) but there are only 51 entries total in it

if it can track a hundred character life time counters then ill be glad to give it a try

for instance
just about every race needs count
number of recipes combined
number of rares harvested
just to name a few

and not place in a table 1 at a time, here we whould have to go and count all the time something was killed

just ideas and thoughts

Jabantiz
Lead Developer
Posts: 2912
Joined: Wed Jul 25, 2007 2:52 pm
Location: California

Re: Implementing: Achievements

Post by Jabantiz » Fri Mar 29, 2019 7:02 pm

That table has been messed with a lot so I wouldn't worry too much about the auto increment value.

In theory all you have to do is set the type/subtype and the values. Values can be whatever you want so you could use the race id for value1 and the kill count for value2 and just update that record every time you kill that race.

That said looking at the types/subtypes i think more need to be added, mainly a killed in the type.

User avatar
Ememjr
Team Member
Posts: 975
Joined: Wed Mar 15, 2017 9:41 am
EQ2Emu Server: Perseverance

Re: Implementing: Achievements

Post by Ememjr » Fri Dec 11, 2020 5:24 am

Ememjr wrote: Thu Mar 28, 2019 1:36 pm ok i found the issue it was an extra SendAchievementsList();that was in send charinfo i commented it back out and the achiements show up

guess not arrapently even the very next toon logging in does not get the proper packet from here

master_achievement_list.masterPacket

seems to work once per reboot, not sure if its one of those mutex we dont like, or masterPacket is just going away, when a user disconnects, or camps
the ninja, lol
i was able to resolve this by adding ->copy() tothe end of these lines

Code: Select all

EQ2Packet* app = master_achievement_list[0].GetAchievementPacket()->Copy();
the reason it is needed the packet is created when the server starts up, if you then queue the packet that packet will get deleted, hence and additon al character logging in will not get it

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Re: Implementing: Achievements

Post by John Adams » Sat Feb 20, 2021 10:10 pm

Nice work Ememjr. Did you guys find a new repo to push code to? Mine hasn't had a commit since May 2020... I'm assuming it's abandoned, or not working and no one told me. ;)

devn00b
Team: Zombie
Posts: 6
Joined: Thu Oct 14, 2010 7:31 pm

Re: Implementing: Achievements

Post by devn00b » Wed Mar 03, 2021 8:46 pm

John Adams wrote: Sat Feb 20, 2021 10:10 pm Nice work Ememjr. Did you guys find a new repo to push code to? Mine hasn't had a commit since May 2020... I'm assuming it's abandoned, or not working and no one told me. ;)
Everything is going to git (your fav I know). But SVN really is a thing of the past and git is the way. You can find it HERE should you want to look at the issues/commits (1119 as of this posting!).

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests