[Request/Help with] RP AddOn Fame and Infamy points
Hi there
I have an idea for an addon which would like to request/try to make myself as my first AddOn. It's an RP AddOn which does the following: - Keep track of 2 values: fame and infamy, which persist through logging in/out, disabling/re-enabling the AddOn, etc. In short it will save both values. (These values are purely for roleplaying and have no in game advantage.) - You infamy points will go up, each time you steal an item, pickpocket or murder an innocent, completing certain achievements/dailies/quests. - You fame points will go up, each time you give money to beggar NPCs, complete certain achievemnts/dailies/quests, or win a duel (or kill in Cyrodiil) with a player that has a certain achievement (Silencer, Master Thief, etc). (The dueling points increase should have a one day cooldown per player.) - An option to link your current fame and infamy points in chat. For longer term: - The value of (fame points minus infamy points) will give you a certain cosmetic rank. Examples -1000 = Grand Criminal -500 = Crime Professional -100 = Popular Lawbreaker -10 = Petty Thief 0 = Citizen 10 = Upstanding Citizen 100 = Guardian of the People 500 = Hero 1000 = Legend Example 1: You have 10 fame points and 120 infamy points -> 10 - 120 = -110 -> Which will make you a "Popular Lawbreaker". Example 2: You have 130 fame points and 70 infamy points -> 130 - 70 = 60 -> Which will make you an "Upstanding Citizen". Would any of this be possible with the current API? Thanks in advance Kind regards Sacralletius |
If by "cosmetic rank" you mean a visible title: only to others with the addon and it'd be a bit tricky.
|
Quote:
I have "x" fame points and "y" infamy points. My current rank is "z". I'm actually more curious on which events are possible to track. For instance, is it possible to track whether another player has a certain achievement? |
So you'd like to be able to verify whether they have legitimately reached that rank?
|
Quote:
What I meant by checking the "achievements", is not these ranks (from the addon) I'm referring to, but actual in game achievements. So for instance, is possible to check through lua scripting if another player has the Silencer Dark Brotherhood achievement? I don't know that much about actual lua scripting syntaxis, but that information could be used in this way: Code:
Event OnDuelWon(Opponent) |
You have very limited access to other player's data. I'm not on to check, but does that achievement give a title? If it did and they were using the title: yes. If it does not: no.
|
Quote:
Just interested, what kind of player data do we have access to? |
The title would also have to be in use. On the API page, search for "unit" and many (not all) of the functions apply to players. You have pretty vast access to your own data, though.
|
it would be very complicated and should use some features that only a few know howw to properly use and that for a very fancy purpose... in other term, welcome to coding.
|
GetUnitBuffInfo -> This one is interesting. Could we use it to return whether the targeted player has the "Blade of Woe" (http://esoitem.uesp.net/viewlog.php?...kills&id=76325) and/or "Padomaic Sprint" ( http://esoitem.uesp.net/viewlog.php?...kills&id=76325) buffs?
Also, are there any events we could use for the player himself, to track whether he has done a particular quest? Something like this: Code:
Event OnQuestCompleted(QuestID) Code:
Event OnPickPocket(NPC) |
If the two players in a duel are in the same group, then you could use LibGroupSocket to transfer the values of the infamy and fame. I think you can retroactively check what quests a player has completed, and there is an event you can use for quest completion, as well as pickpocketing. You could also differentiate between items stolen from say a drawer.
|
Quote:
|
Quote:
I'm not really interested in having to group up with someone to share the info, but I assume that is the only way to track whether another player has completed a quest/achievement? Which functions/events could be used for that? |
Quote:
|
Quote:
|
It's a nice idea you have there. You should try to keep it simple at first and try to reduce it to the core functionality.
Try make something that just keeps track of one event for famity and one for infamity, saves the resulting points and allows you to share it via chat with a keybind. From there you can still expand it however you want. For the infamity points you could listen to EVENT_JUSTICE_INFAMY_UPDATED and convert them to your own points. For famity maybe just listen to EVENT_QUEST_COMPLETE at first and add points based on quest type and xp gain. If you haven't done so you should read the getting started guide and do some of the tutorials on the wiki's main page. |
Quote:
But even then, the other player needs to have the addon as well, which I doubt many people will have. I think only a very small percentage of all players will actually use this addon, so I'll have to find other ways to make it work. One way, as pointed out, is tracking the active buffs or titles the other player has. Although, I understand that it isn't possible to track passive skills, quests or achievements without grouping up? So, for instance, I want to be able to do the following: if I see another player with the Silencer title, I can challenge them to a duel, without needing to group up. If I win the duel, I will get 20 points added to my fame points. Perhaps add a fancy message that will display in my game only (not the opponent or anyone else), saying "I've brought a criminal to justice." or something like that. Maybe play a simple sound, as well. The message and sound could be done similar to the messages you get from the Alliance War: "Player X of your alliance has been crowned Emporer." Is this possible? So, if I understand correctly: Outside of Cyrodiil, without grouping up, it is possible to track: - Titles - Active buffs Outside of Cyrodiil, I'll need to group up (LibGroupSocket requirement), in order to track: - Quests - Achievements - Passive Skills Inside Cyrodiil, it's only possible to track titles. Is this correct? |
Quote:
|
Quote:
* play a sound (but only from the list of existing sound effects, no custom stuff) * show a message like the emperor one * track all your own titles, buffs, quests, achievements passives * read the currently selected title of another player (but only as a string) Things you cannot do: * track anything about the progress of another player (like titles, achievements, quests, etc.) The thing with LibGroupSocket is, that both players need to have your addon and be in a group and then you can only send a maximum of 7 bytes at a time. It's simply not made for tracking a lot of information about someone. More to transport specific data between group members (like stamina and magicka values). I am also not sure about tracking buffs of other players. A few things changed recently and I haven't tried yet what's still possible. |
I know that you can see buffs from a targetted player by using S'rendar Buff tracker. This also allows you to view whether or not the targetted player has the vampire or werewolf buffs, which could be useful.
Other than that, I would prefer not using the LibGroupSocket and the grouping up part, for two reasons: - I prefer to keep my addon lightweight (not sending/receiving too much data). - Having the addon and grouping up with other players will make it much less convenient and only a very small amount of other players will meet this requirement. I think using the selected other players title (and maybe buffs if I can figure out S'rendarr) is the best and most lightweight way to approach this. I think I'll start with implementing the fame/infamy increase on quest completion/pickpocketing first, though. |
All times are GMT -6. The time now is 08:28 AM. |
vBulletin © 2024, Jelsoft Enterprises Ltd
© 2014 - 2022 MMOUI