Download
(41 Kb)
Download
Updated: 12/11/22 11:44 PM
Pictures
File Info
Compatibility:
Firesong (8.2.5)
Lost Depths (8.1.5)
High Isle (8.0.0)
Ascending Tide (7.3.5)
Updated:12/11/22 11:44 PM
Created:10/08/22 04:18 AM
Monthly downloads:73
Total downloads:3,304
Favorites:6
MD5:
Categories:Auction House & Vendors, Data Mods, Group, Guild & Friends
Marcus' Guild Management Tool (Poukav CLI)
Version: 1.9.2
by: Marcus Brody [More]
Supported Languages

(scrollez vers le bas pour la documentation FR)

Dependencies:
LibAddonMenu
LibHistoire
MasterMerchant

Optional dependencies:
TamrielTradeCenter

COMING SOON: FULL GRAPHICAL USER INTERFACE WITH ALL THE PREVIOUS CLI FEATURES AND MORE!!

Addon description
Marcus' Poukav is an all-in-one tool to help managing a trading guild.
It uses only chat commands and displays the results in the chat output.
This documentation is quite long, but worth reading

[Why Poukav ? Poukav is a word coming from the Romani language, it can be translated as "a snitch" and is used as slang where I live. It is the start of all the commands in this addon because the project started as a simple tool to detect who was stealing in our bank. As the addon evolves, Poukav may be replaced by MGM for Marcus Guild Manager. More on that coming soon ]

Features:
  • Auto Ranking
  • Donations check
  • Retrieve a list of guild members below a specified gold balance (detects member taking too much items without compensating)
  • Retrieve a list of guild members without any item listed in the trading house, optionally for a specific rank
  • View guild history (invite/promote/demote/kick...)
  • View guild bank operations (gold/item withdrawals/deposits)
  • View guild store sold items
  • View total gold value of bank operations
  • View total of sells, taxes and purchases
  • View items in sale in the trading house
  • Targeting a guild or member by abbreviated name when doing all of the above
  • For any given period using timeframe expression (when applicable)

Auto ranking:

For each of your guilds, and for each non administrative rank in the guild you can define a target value one member must reach to get to or maintain themself to this rank.
When a rank is set to "permanent", no automatic demotion can occur from this rank.
The rank evaluation periodicity can be set to "none" implying that this rank is not automated, or to "weekly" or "monthly".
A member cannot be demoted more than once per week (or month if rank evaluation is monthly), so it is safe to run the ranking command multiple times per week (or by multiple officers).
When the ranking command is ran, sales and bank deposits are summed over the previous period of interest(previous week or previous month).
If the sum of sales, purchases and gold deposits of a member is greater than a rank specified minimum value, the member can be promoted to this rank. Conversely, if the rank is not permanent and the summed value of a member is below the specified rank minimum, the member can be demoted from this rank.
If the percentage of external sales (ie to buyers from outside the guild) is below a specified value, the command assumes there were no merchant on the period of interest and the command exits without changing any rank.
By default, the command is in dry mode (simulation only), so it only displays how the ranks *should* be changed, without actually changing anything.
It allows to safely check that the rank settings will give the desired results.
Simulation mode can be deactivated from the settings.

Code:
Usage:
/poukav ranks <guild name>
Result example (anonymized)



Donations check:

In the guilds settings you can define a donation's frequency("none", "weekly" or "monthly"), amount and start date. The three fields are required for the donation to be enabled. Once configured, the "donations" command can be run. It will compute how many donations can exist between the start date of the donation and now. Then for each guild member, it will compute how many of these donations they should actually pay. To be "eligible" to a donation, one member has to have been active during a donation timeframe. A member is considered active in a week if they have made a sale or withdrew a bank item in at least 3 different days during this week. A member is considered active in a month if they have made a sale or withdrew a bank item in at least 2 different weeks during this month. The sum of the active periods of a member is multiplied by the amount of the donation and then compared against the sum of the gold deposits of the member since the donation has been created. Members for whom the deposited amount is below the owed donation amount will be displayed in the "donations" command's report. The result will be sorted by missing donations count ascending order and total sales. The "worst" members will therefore appear at the bottom of the list. The online status of each member is also shown to make it easy to contact these members with a direct message.
Code:
Usage:
/poukav donations <guild name>
Result example (anonymized)



Timeframe specification:

When a command accepts a timeframe parameter, it is defined by time units.
  • D for "day" means the current day, D-1 means yesterday, D-2 the day before...etc
  • W for "week" means the current week, W-1 last week, W-2 the week before...etc
  • M for "month" means the current month, M-1 last month, M-2 the month before...etc
When only one time unit is given, it is implied "until the end of" the day or week or month.
But it is possible to give two, separated by an arrow (=> or only >), to express consecutives days or weeks or month.
Examples:
Code:
W-3=>W
means "from the first hour of the first day of week -3 to the end of the current week"
Code:
M-6=>D
means "from the first day of the month 6 month before the current month, to the end of the current day"
As with all other parameters, a timeframe expression should not contain spaces.




Type
Code:
/poukav help
to get help ingame



Description de l'extension
Marcus' Poukav est un outil tout-en-un pour aider à gérer une guilde marchande.
Il utilise uniquement des commandes dans le chat et y affiche ses résultats.
Cette documentation est assez longue, mais vaut la peine d'être lue

[Pourquoi Poukav ? Poukav est un mot qui vient de la langue Romani, il peut être traduit par "celui qui balance" et est utilisé en argot là où je vis. C'est le début de chaque commande car ce projet a commencé en tant qu'un outil très simple pour détecter les membres qui pillaient notre banque de guilde. L'addon évoluant, Poukav pourrait remplacé par "MGM" pour Marcus Guild Manager. Plus sur ce sujet prochainement ]

Fonctionnalités:
  • Promotions automatiques (mise à jour des grades)
  • Vérification des donations
  • Trouver les membres de guilde en dessous d'un solde spécifié (membres qui retirent trop d'items en banque sans compenser suffisamment)
  • Trouver les membres sans aucun article en vente, optionnellement pour un rang donné
  • Voir l'historique de guilde (invitation/promotion/rétrogradation/kick...)
  • Voir les opération bancaires de la guilde (or/item retraits/dépôts)
  • Voir les ventes
  • Voir la valeur totale associée aux opérations bancaire
  • Voir le total des ventes, taxes et achats
  • Voir les items actuellement en vente dans la boutique
  • Toutes les opération ci-dessus peuvent être effectuées pour la guilde et le membre de votre choix (ou tous *), en utilisant un nom abrégé
  • sur la plage de temps de votre choix (quand applicable)

Promotions automatiques:

Pour chacune de vos guildes, et pour chaque rang non administratif de ces guildes, vous pouvez définir une valeur d'objectif qu'un membre doit atteindre pour être promu ou maintenu à ce rang.
Quand un rang est défini comme "permanent", aucune rétrogradation automatique ne peut arriver pour ce rang.
La fréquence d'évaluation d'un rang peut être définie à "none" impliquant que ce rang n'est pas automatisé, ou définie à "weekly" pour hebdomadaire ou "monthly" pour mensuel.
Un membre ne peut pas être rétrogradé plus d'une fois par semaine (ou par mois si la fréquence est mensuelle), lancer la commande plusieurs fois par semaine est donc sans risque (ou par plusieurs officiers).
Quand la commande est lancée, les ventes et les dépôts d'or sont sommés sur la période précédente (semaine dernière ou mois dernier).
Si la somme des ventes, achats et dépôts d'or d'un membre est supérieur à la valeur minimum d'un rang, le membre peut être promu à ce rang. Inversement, si le rang n'est pas permanent et la valeur sommée d'un membre est inférieur au minimum de son rang actuel, le membre peut être rétrogradé de ce rang.
Si le pourcentage de ventes externes (càd à des acheteurs en dehors de la guilde)est en dessous d'une valeur spécifique, la command considère qu'il n'y avait pas de marchand et se termine sans rien changer.
Par défaut, la commande ne fait que simuler la mise à jour des rangs, elle ne fait donc qu'afficher un rapport des changements de rangs qui devraient se produire, sans rien modifier réellement.
Cela permet de vérifier en toute sécurité que les réglages produisent le résultat attendu.
Le mode simulation peut être désactivé dans les réglages.
Code:
Usage:
/poukav rangs <nom de guilde>
Exemple de résultat (anonymisé)


Vérification des donations:

Dans les réglages de guilde vous pouvez définir la fréquence d'une donation("none", "weekly" or "monthly"), son montant et date de début. Les trois chaps sont requis pour activer la donation. Une fois configurée, on peut lancer la commande "donations". Elle va calculer combien de donations peuvent exister entre la date de création de la donation et maintenant. Ensuite pour chaque membre de la guilde, elle va calculer combien de cese donations un membre doit réellement payer. Pour être "éligible" à un dépôt de donation, un membre doit avoir été actif sur la période correspondante à ce dépôt. Un membre est considéré actif sur une semaine si il a effectué une vente ou un retrait d'item en banque au cours d'au moins 3 jours différents de cette semaine. Un membre est considéré actif sur un mois si il a effectué une vente ou un retrait d'item en banque au cours d'au moins 2 semaines différentes de ce mois. La somme des périodes actives d'un membre est mutipliée par le montant de la donation et ensuite colmparée avec la somme des dépôts d'or de ce membre depuis la date de création de la donation. Les membres pour qui le montant déposé est inférieur au montant dû de donations vont être affichés dans le rapport de la commande "donations". Le résultat sera trié par ordre croissant du nombre de donations manquantes, puis ordre descendant du chiffre d'affaire de vente de ce membre depuis le début de la donation. Les "pires" membres apparaitront donc en bas de la liste. Le statut "online" des membres de cette liste sera aussi affiché pour permettre de facilement contacter les membres par message direct.
Code:
Usage:
/poukav donations <guild name>
Exemple de résultat (anonymisé)



Spécification d'une plage de temps:

Quand une commande prend un paramètre de plage de temps, elle est définie par unités de temps.
  • D pour "day" signifie la journée en cours, D-1 signifie hier, D-2 avant hier...etc
  • W pour "week" signifie la semaine en cours, W-1 signifie la semaine dernière, W-2 la semaine d'avant...etc
  • M pour "month" signifie la mois en cours, M-1 signifie le mois dernier, M-2 le mois d'avant...etc
Lorsqu'un seul paramètre d'unité de temps est donné, c'est sous entendu du début à la fin de la journée ou de la semaine ou du mois ciblé.
Mais il est possible d'en fournir 2 séparés par une flèche (=> ou > seul) pour exprimer une suite de jours ou semaines ou mois.
Par exemple:
Code:
W-3=>W
signifie "de la première heure du premier jour de la semaine -3 à la fin de la semaine en cours"
Code:
M-6=>D
signifie "du premier jour du mois 6 mois avant le mois en cours, jusqu'à la fin de la journée en cours"
Comme pour tous les autres paramètres, une expression de plage de temps ne doit pas contenir d'espaces.



Tapez
Code:
/poukav aide
pour obtenir de l'aide en jeu



In the documentation below terms between <> are parameter names, the actual parameter value must not be surrounded by <>.
Also terms between [] are optional parameter, they can be omitted if they're not needed, the actual parameter value must not be surrounded by []

Base help command
Code:
/poukav help [<keyword>]
Search a guild (permissive)
Code:
/poukav search guild <guild search name>
Search a guild member (permissive)
Code:
/poukav search member <guild search name> <user search name>
List guild activity around a specified member (join/leave/kick/promotion/demotion...)
Code:
/poukav guild <guild name> <member name>
List bank activity of a specified user
Code:
/poukav bank <guild name> <user name>  [<period param>] [<filter flags>]
optional period param being D for current day, W current week, M current month, D-1 yesterday, W-1 last week... etc
optional filter flags are a combination of letters G for gold, I for item, D for deposits and W for withdrawal

Get bank deposit/withdrawal totals for a specified guild member
Code:
/poukav total bank <guild name> <user name> [<period param>]
Get sales totals, total sold, total tax collected, total purchases for a specified guild member
Code:
/poukav total sales <guild name> <user name> [<period param>]
Retrieve the list of sus users (in debt by more than a specified amount, on the addon settings page)
Code:
/poukav whosus <guild name> [<period param>]
To get listed products for a given guild member, must be at the guild trading house to update the data
Code:
/poukav listings <guild name> <user name>
To get guild members with nothing listed, optionnaly filtering on a specific rank, also needs guild store data
Code:
/poukav empty_listings <guild name> [<rank name>]
To list who to promote/demote (look in settings=> member ranks for rules) once the week has finished
Code:
/poukav ranks <guild name>
To list who is late on their donations
Code:
/poukav donations <guild name>
v1.9.2
Fixed a bug where it was possible for a guild member to be demoted twice during a period

v1.9.1
Added checks on member activity to avoid asking them donations for periods during which they were not active.

v1.9
Added donations command

v1.8
Fixed a bug with icon formatting
Now preloads data using LibHistoire listener API
Long running operations are now asynchonously chained to reduce ui freezes or crash

v1.7
Ranks command can now effectively change ranks.
Guild ranks configuration in one submenu per guild
Added artistic licence

v1.6
Added "ranks" command to simulate promote/demote according to rules in settings

v1.5
Public release
Commands and output made fully localizables
Help partially localizable
Added french localization
Added output coloring
Optimized "whosus" report
Removed xxx_balance commands and replaced them by the "total" command
Updated documentation
Optional Files (0)


Archived Files (9)
File Name
Version
Size
Uploader
Date
1.9.1
40kB
Marcus Brody
12/11/22 08:20 AM
1.9
38kB
Marcus Brody
12/06/22 03:02 PM
1.8
34kB
Marcus Brody
12/04/22 09:00 PM
1.7
33kB
Marcus Brody
11/24/22 01:47 PM
1.6
25kB
Marcus Brody
11/16/22 01:10 PM
1.5
22kB
Marcus Brody
11/13/22 10:17 AM
1.4
14kB
Marcus Brody
10/31/22 09:22 PM
1.3
14kB
Marcus Brody
10/31/22 07:12 AM
1.0b
6kB
Marcus Brody
10/08/22 04:18 AM


Post A Reply Comment Options
Unread 10/15/23, 03:39 PM  
S4crify

Forum posts: 0
File comments: 1
Uploads: 0
Fee and Sale Mix

Hi there!
Do you think its possible we can get a function that scans for either sale or donation?
Greetings!
Report comment to moderator  
Reply With Quote
Unread 11/04/22, 07:04 AM  
xen32
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 104
Uploads: 1
Amazing! Thank you
Report comment to moderator  
Reply With Quote
Unread 11/03/22, 09:03 AM  
Marcus Brody
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 8
Uploads: 1
Originally Posted by xen32
Hi!

Nice tool!


I can't find in description commands to run these?
* Listing items in sale in the trading house for a specific guild member
* Listing guild members without any item listed in the trading house, optionaly for a specific rank

Please help Thanks!
I'm still working on the documentation sorry for that.
The missing commands are
Code:
/poukav listings <guild name> <user name>
to get listed products for a given guild member, must be at the guild trading house to update the data

/poukav empty_listings <guild name> [<rank name>]
to get guild members with nothing listed, optionnaly filtering on a specific rank, also needs guild store data
Once the data is fetched it will be cached to allow multiple queries without a full scan.
The cached data has a timeout after which the addon will try to refresh the data when executing listings or empty listings at a guild store

The timeout is a setting (default to 10 minutes I think)
Last edited by Marcus Brody : 11/03/22 at 10:29 AM.
Report comment to moderator  
Reply With Quote
Unread 11/02/22, 11:37 AM  
xen32
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 104
Uploads: 1
Hi!

Nice tool!


I can't find in description commands to run these?
* Listing items in sale in the trading house for a specific guild member
* Listing guild members without any item listed in the trading house, optionaly for a specific rank

Please help Thanks!
Report comment to moderator  
Reply With Quote
Unread 10/31/22, 06:58 PM  
Sharlikran
 
Sharlikran's Avatar
AddOn Author - Click to view AddOns

Forum posts: 621
File comments: 1992
Uploads: 15
Originally Posted by Marcus Brody
I'm looking into it. Thanks a lot
I don't technically have an API for MM but I will let people know when it happens. MasterMerchant:itemStats() will be alias and only some mods will break.
Last edited by Sharlikran : 10/31/22 at 06:58 PM.
Report comment to moderator  
Reply With Quote
Unread 10/31/22, 05:53 PM  
Marcus Brody
AddOn Author - Click to view AddOns

Forum posts: 3
File comments: 8
Uploads: 1
Originally Posted by Sharlikran
Lua Code:
  1. local function getAveragePrice(link)
  2.  
  3.     local price = priceCache[link]
  4.     if price == nil or (not price) or price == 0 then
  5.         if TamrielTradeCentre then
  6.             local ttcPriceInfo = TamrielTradeCentrePrice:GetPriceInfo(link)
  7.             if (ttcPriceInfo) then
  8.                 price = ttcPriceInfo.SuggestedPrice
  9.             else
  10.                 price = MasterMerchant:itemStats(link, false)
  11.             end
  12.            
  13.         else
  14.             price = MasterMerchant:itemStats(link, false)
  15.         end
  16.         priceCache[link] = price
  17.     end
  18.    
  19.     return price or 0
  20. end
It would be best to change the function to the above code. In the event I change something then your mod won't break and you won't have to make an update to fix it.
I'm looking into it. Thanks a lot
Report comment to moderator  
Reply With Quote
Unread 10/31/22, 03:48 PM  
Sharlikran
 
Sharlikran's Avatar
AddOn Author - Click to view AddOns

Forum posts: 621
File comments: 1992
Uploads: 15
Lua Code:
  1. local function getAveragePrice(link)
  2.  
  3.     local price = priceCache[link]
  4.     if price == nil or (not price) or price == 0 then
  5.         if TamrielTradeCentre then
  6.             local ttcPriceInfo = TamrielTradeCentrePrice:GetPriceInfo(link)
  7.             if (ttcPriceInfo) then
  8.                 price = ttcPriceInfo.SuggestedPrice
  9.             else
  10.                 price = MasterMerchant:itemStats(link, false)
  11.             end
  12.            
  13.         else
  14.             price = MasterMerchant:itemStats(link, false)
  15.         end
  16.         priceCache[link] = price
  17.     end
  18.    
  19.     return price or 0
  20. end
It would be best to change the function to the above code. In the event I change something then your mod won't break and you won't have to make an update to fix it.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: